您的位置:首页 > 其它

C 语言-简单选择排序

2017-04-14 15:13 399 查看
#include
#include
#define N 7
 
void selectSort(int keys[],int length);
int selectMin(int keys[],int start,int end);

//length
代表数组长度 
void selectSort(int keys[],int length) {
int i,index;
//依次从存在数据的位置上,从 1 到 length-2 抽取最小元素,放到最前面
 最后一个元素不用比较,所以是 length-2 
for (i = 1;i < length-1; i++) { 
//调用函数 selectMin 在指定范围内找到最小值的下标,并返回 
index = selectMin(keys,i,length-1);
//以下三步,是将找到的最小值放到前面;这里 下标 0
处的空间发挥了临时存储的作用 
keys[0] = keys[i];
keys[i] = keys[index];
keys[index] = keys[0];
}
}
//
在数组中的指定范围内找到最小值 
int selectMin(int keys[],int start,int end) {
int index = start;
int i;
//假设传入的下标 start 处的元素为最小值 
int min = keys[start];
for (i = start+1;i <= end; i++) {
if (keys[i] < min) {
min = keys[i];
index = i;
}
}
//printf("\nindex下标%d\n",keys[index]);
return index;


//此处是主函数,在这里输入数据,并调用 selectSort
这个方法进行简单选择排序 
int main(int argc, char *argv[])
{
//定义数组存储数据,由于将 keys[0] 作为交换数据的临时空间,所以不能存储数据,实际只能存储
N-1个数据 
int keys
;
//定义数据输入时的循环变量 
int i;
printf("\n一共要输入%d个值\n",N-1);
//循环输入 N-1 个数据,下标从 1 到 N-1 
for (i = 1;i < N; i++) { 
printf("\n请输入第%d个数:",i);
scanf("%d",&keys[i]);
}
//调用 selectSort 方法  keys数组和 N 作为参数,传给了该方法
 
selectSort(keys,N);
//④ 
for (i = 1;i < N;i++ ) {
printf("%d\t",keys[i]);
}
return 0;
}

//------------------原格式图片-----------------------------------------------


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: