选择排序c语言代码

选择排序是一种简单直观的排序算法。它的基本思想是每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

c
#include <stdio.h> // 选择排序函数 void selectionSort(int arr[], int n) { int i, j, minIndex, temp; for (i = 0; i < n - 1; i++) { // 在未排序的部分中找到最小元素的下标 minIndex = i; for (j = i + 1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // 将找到的最小元素与当前元素交换 temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } // 打印数组元素 void printArray(int arr[], int size) { int i; for (i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr) / sizeof(arr[0]); printf("原始数组: \n"); printArray(arr, n); // 调用选择排序函数 selectionSort(arr, n); printf("排序后的数组: \n"); printArray(arr, n); return 0; }

上述代码定义了一个选择排序的函数selectionSort,以及一个用于打印数组元素的函数printArray。在main函数中,我们定义了一个整数数组,调用选择排序函数,并打印排序后的数组。这是一个简单的选择排序实现,适用于小规模数据的排序。

c
#include <stdio.h> // 选择排序函数 void selectionSort(int arr[], int n) { int i, j, minIndex, temp; // 外层循环控制选择排序的轮数 for (i = 0; i < n - 1; i++) { // 在未排序的部分中找到最小元素的下标 minIndex = i; // 内层循环用于在未排序的部分中找到最小元素的下标 for (j = i + 1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // 将找到的最小元素与当前元素交换 temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } // 打印数组元素 void printArray(int arr[], int size) { int i; for (i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr) / sizeof(arr[0]); printf("原始数组: \n"); printArray(arr, n); // 调用选择排序函数 selectionSort(arr, n); printf("排序后的数组: \n"); printArray(arr, n); return 0; }

这段代码的关键点包括:

selectionSort函数中的外层循环用于控制选择排序的轮数,内层循环用于在未排序的部分中找到最小元素的下标。在找到最小元素的下标后,通过交换元素的方式将最小元素放到正确的位置。printArray函数用于打印数组元素,方便在排序前后进行对比。main函数中创建了一个整数数组,调用选择排序函数,并打印排序前后的数组。

标签