您的位置:首页 > 其它

选择排序算法

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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: