C 练习实例37 - 排序
题目:对10个数进行排序。
程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。
实例
#include <stdio.h>
#define N 10
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;
}
}
if (minIndex != i) {
// Swap the elements
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
int main() {
int arr[N];
printf("请输入 %d 个数字:\n", N);
for (int i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
selectionSort(arr, N);
printf("排序结果是:\n");
for (int i = 0; i < N; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
以上实例输出结果为:
请输入 10 个数字: 23 2 27 98 234 1 4 90 88 34 排序结果是: 1 2 4 23 27 34 88 90 98 234
algorithm
522***[email protected]
参考地址
基础算法之简单选择排序(selection sort)
1,名 称:简单选择排序
2,复杂度:O(n^2)
3,实现方式:C语言
4,空间复杂度:O(1)
5,稳定性:不稳定
6,算法思想:总共遍历两次,外层循环是算法总共要至执行的此数,那么为什么呢?因为该算法每一次执行外层循环会进行一次交换,默认i所在的位置是最大或者最小(要根据升序还是降序确定),然后里层循环是确定要交换的数字,请具体的思想请大家去代码中体会吧!
7,算法种类:升序(ascending order)、降序(descending order)
8,算法实现代码:
algorithm
522***[email protected]
参考地址
HIT_CCC
117***[email protected]
参考方法:
HIT_CCC
117***[email protected]
socbis
975***[email protected]
参考实例:
socbis
975***[email protected]