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
ICP备案:
公安联网备案: