选择排序算法-----简单选择排序算法:
简单选择排序算法的思想:就是每次循环找出最小的数,并用temp记录最小值以及用index记录最小值的下标;
代码如下:
#include <stdio.h>
void selecksort(int *a, int length)
{
int i,j,temp,index;
for(i = 0; i<length; i++)
{
//用temp变量记录最小值,index记录最小值的下标
temp = a[i];
index =i;
for(j = i+1; j<length; j++)
{
if(a[j]<temp) //遇到比起始值小的数,则更新temp与index
{
temp = a[j];
index = j;
}
}
if(index != i) //因为index初始值为i,如果仍未i,则说明本身初始的值也是最小值
{
a[index] = a[i];
a[i] = temp;
}
}
}
int main()
{
int arry[]={12,10,21,0,6,7,18,16,30,99,85,76,24,31,2,48,52,43,26,8};
int length = sizeof(arry)/sizeof(int);
printf("排序前: ");
for(int i=0; i<length; i++)
{
printf("%d ", arry[i]);
}
selecksort(arry, length);
printf("\n排序后: ");
for(int i=0; i<length; i++)
{
printf("%d ", arry[i]);
}
return 0;
}
程序运行如下: