选择排序算法
2019-06-17 00:45
162 查看
选择排序是通过选择和交换来实现排序。
流程如下:
(1):首先在原始数组中选择一个最小的数据让其与第一个位置的数据交换。
(2):接着从(n-1)个数据中选择次小的数据将其和第二个位置的数据交换位置
(3):然后一直如此下去即可
下面举个例子:
初始数据:118 101 105 127 112
一次排序:101 118 105 127 112
二次排序:101 105 118 127 112
三次排序:101 105 112 127 118
四次排序:101 105 112 118 127
下面是具体的代码:
#include<stdio.h> #include<stdlib.h> #include<time.h> #define SIZE 10 void SelectionSort(int *a,int len)//选择排序算法 { int i,j,k,h; int temp; for(i=0;i<len-1;i++) { k=i; for(j=i+1;j<len;j++) { if(a[j]<a[k]) k=j; }//这个for循环作用就是找出最小的数据的位置 if(k!=i)//如果这个位置不是i执行以下操作交换俩个数据的位置即可 { temp=a[i]; a[i]=a[k]; a[k]=temp; } printf("第%d步排序结果巧:",i); for(h=0;h<len;h++) { printf("%d ",a[h]); } printf("\n"); } } void main()//主函数 { int i; int shuzu[SIZE]; srand(time(NULL)); for(i=0;i<SIZE;i++) { shuzu[i]=rand()/1000+100; } printf("排序前:\n"); for(i=0;i<SIZE;i++) { printf("%d ",shuzu[i]); } printf("\n"); SelectionSort(shuzu,SIZE); printf("排序后:\n"); for(i=0;i<SIZE;i++) { printf("%d ",shuzu[i]); } printf("\n"); }
相关文章推荐
- 算法之选择排序
- 第十五周项目1-验证算法-直接选择排序
- 【每日算法】选择排序算法之堆排序
- java基础算法之选择排序
- 内排序算法之 —— 选择排序
- 基础算法-直接选择排序
- 算法—1.选择排序
- 数据结构与算法之排序算法---简单选择排序
- 算法---冒泡排序,快速排序,二分查找(折半查找),选择排序,插入排序
- 【算法】 简单选择排序
- 数据结构与算法——冒泡排序、选择排序和快速排序
- 算法和数据结构---排序--简单选择排序
- 算法-选择排序
- 第十五周——项目一—验证算法(6)选择排序之堆排序
- JavaScript ,Python,java,Go系列算法之【选择排序】篇
- 数据结构算法之排序系列Java、C源码实现(3)--直接选择排序
- 算法和数据结构-选择排序、插入排序及希尔排序 java实现
- 算法剖析之选择排序与插入排序
- Java数据结构与算法之数组排序——选择
- 算法总结(3)选择排序