选择排序
发布日期:2021-05-14 09:05:19 浏览次数:17 分类:精选文章

本文共 1107 字,大约阅读时间需要 3 分钟。

基本思想:

在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。

 

 

操作方法:

第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;

第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换;

以此类推.....

第i 趟,则从第i 个记录开始的n-i+1 个记录中选出关键码最小的记录与第i 个记录交换,

直到整个序列按关键码有序。

 

简单选择排序的示例:

#include 
void printArray(int arr[], int n){ int i; for(i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n");}void selectSort(int arr[], int n){ int i, j , minValue, tmp; for(i = 0; i < n-1; i++) { minValue = i; for(j = i + 1; j < n; j++) { if(arr[minValue] > arr[j]) { minValue = j; } } if(minValue != i) { tmp = arr[i]; arr[i] = arr[minValue]; arr[minValue] = tmp; } printf("the %d sort: ",i); printArray(arr, 10); }}int main(){ int arr[10] = {2,5,6,4,3,7,9,8,1,0}; printArray(arr, 10); printf("start to sort=========\n"); selectSort(arr, 10); printf("after sorting=========\n"); printArray(arr, 10); return 0;}

运行结果如下。 

 

 

上一篇:冒泡排序
下一篇:dosbox下载并配置BC3.1及环境变量的方法

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年05月05日 20时05分17秒