C语言选择排序
选择排序是一种简单的排序算法,其主要思想是通过不断选择未排序部分的最小值,将其放到已排序部分的末尾。这个过程不断循环,直到整个数组都排好序为止。
下面详细介绍一下 C语言选择排序的实现过程:
下面是一个 C语言实现选择排序的代码:
以下是一个简单的测试程序,它生成一个随机数组,并对其进行选择排序:
下面详细介绍一下 C语言选择排序的实现过程:
- 首先遍历整个数组,找到未排序部分中的最小值;
- 将该最小值和未排序部分的第一个元素交换位置,即将最小值放到已排序部分的末尾;
- 然后继续遍历未排序部分,重复上述步骤,直到所有元素都被排序。
下面是一个 C语言实现选择排序的代码:
void selectionSort(int arr[], int n) { int i, j, min_idx; for (i = 0; i < n - 1; i++) { // i表示已排序部分的长度 min_idx = i; // 假设未排序部分的第一个元素为最小值 // 在未排序部分中查找最小值 for (j = i + 1; j < n; j++) { if (arr[j] < arr[min_idx]) { min_idx = j; } } // 将最小值与已排序部分的末尾交换位置 int temp = arr[min_idx]; arr[min_idx] = arr[i]; arr[i] = temp; } }上述代码中,变量 arr 表示待排序的数组,n 表示数组的长度。
以下是一个简单的测试程序,它生成一个随机数组,并对其进行选择排序:
#include <stdio.h> #include <stdlib.h> #include <time.h> void selectionSort(int arr[], int n); int main() { srand(time(NULL)); // 设置随机数种子 int arr[10]; int i; printf("Original array: "); for (i = 0; i < 10; i++) { arr[i] = rand() % 100; // 生成0-99之间的随机整数 printf("%d ", arr[i]); } printf("\n"); selectionSort(arr, 10); // 对数组进行选择排序 printf("Sorted array: "); for (i = 0; i < 10; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }运行结果如下所示:
Original array: 74 94 44 63 89 69 33 60 17 12
Sorted array: 12 17 33 44 60 63 69 74 89 94