数据结构与算法 ~ 排序 ~ 选择排序
/*sort--selectsort*/
#include<stdio.h>
#include<stdlib.h>
void selectsort(int *list,int len){
int i,j;
for(i=1;i<=len;++i){
j=minkey(list,i,len);
if (i!=j){
list[0]=list[i];
list[i]=list[j];
list[j]=list[0];
}/*if*/
Print(list,len);
}/*for*/
}/*selectsort*/
int minkey(int *list,int i,int len){
int k=i,j,min;
list[0]=list[i];
for(j=i;j<=len;++j){
if (list[0]>list[j]){
list[0]=list[j];
k=j;
}/*if*/
}/*for*/
return k;
}/*minkey*/
int Print(int *list,int len){
int i;
printf ("\n当前序列是 : ");
for (i=1;i<=len;++i)
printf (" %d,",list[i]);
}/*Print*/
int main (){
int list[20];
int len=0;
int node,i;
printf ("\n请输入待排序的数字(Exit for 0)\n");
scanf("%d,",&node);
while(node!=0){
list[++len]=node;
scanf("%d,",&node);
}/*while*/
printf ("\n====初始的序列为:=====");
Print(list,len);
printf("length=%d",len);
printf("\n============================");
selectsort(list,len);
printf ("\n======排序结果是:======= :");
Print(list,len);
system("pause");
exit(0);
}
运行结果:
请输入待排序的数字(Exit for 0)
59
48
75
96
86
23
37
59
65
14
0
====初始的序列为:=====
当前序列是 : 59, 48, 75, 96, 86, 23, 37, 59, 65, 14,length=10
============================
当前序列是 : 14, 48, 75, 96, 86, 23, 37, 59, 65, 59,
当前序列是 : 14, 23, 75, 96, 86, 48, 37, 59, 65, 59,
当前序列是 : 14, 23, 37, 96, 86, 48, 75, 59, 65, 59,
当前序列是 : 14, 23, 37, 48, 86, 96, 75, 59, 65, 59,
当前序列是 : 14, 23, 37, 48, 59, 96, 75, 86, 65, 59,
当前序列是 : 14, 23, 37, 48, 59, 59, 75, 86, 65, 96,
当前序列是 : 14, 23, 37, 48, 59, 59, 65, 86, 75, 96,
当前序列是 : 14, 23, 37, 48, 59, 59, 65, 75, 86, 96,
当前序列是 : 14, 23, 37, 48, 59, 59, 65, 75, 86, 96,
当前序列是 : 14, 23, 37, 48, 59, 59, 65, 75, 86, 96,
======排序结果是:======= :
当前序列是 : 14, 23, 37, 48, 59, 59, 65, 75, 86, 96,请按任意键继续. . .