惯例,给大家介绍选择排序(以从小到大的位置为例说明)。
基本思想是,首先选出最小的数,放在第一个位置;然后选出第二小的数,放在第二个位置,......以此类推,进行排序。
还是以图来说明,更为专业的描述请大家自行搜索。
话不多说,奉上代码,如有错误请多指教!
#include<stdio.h>
#define P 10
void selectsort(int p[],int length);
int main()
{
int a[P] = {1,23,2,5,67,3,50,17,48,19};
int i,length;
length = sizeof(a)/sizeof(a[0]);
for(i=0;i<length;i++)
{
printf("%d ",a[i]);
}
printf("\n");
selectsort(a,length);
printf("*******select sort*******\n");
for(i=0;i<length;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
//选择排序
void selectsort(int p[],int length){
int i,j,k;
int temp;
// 要注意一点,当要排序 N 个数,已经经过 N-1 次遍历后,已经是有序数列
for(i=0;i<length-1;i++)
{
k = i;// 用来保存最小值得索引
for(j=i+1;j<length;j++)
{
if(p[k]>p[j])
k = j;
}
//与初始的i下标交换大小
temp = p[i];
p[i] = p[k];
p[k] = temp;
}
}