您的位置:首页 > 其它

选择排序----数组实现

2015-08-22 11:22 281 查看
/*select_sort.cpp--------选择排序的数组实现*/

/*

算法:

最小值初始化为第一个。依次和第2、3……个进行比较,如果第一个大于他们,那么就把最小值的下标变为他们。

比较这一行以后把第一个元素和最小值的下表进行交换,这样就完成了第一轮比较,第一个问最小值。进行第二轮比较。

最小值初始化为第二个。依次比较……

链表的实现:链表实现同数组实现不同。基本思路:新建一个链表,从就链表中选择最小值插入到新链表的末尾。

*/

/*-------------------数组实现------------------*/

/*

#include <stdio.h>

#define LEN 5

void init_arr(int *pArr,int len);

void show_arr(int *pArr,int len);

void sort_arr(int *pArr,int len);

void swap(int *pArr,int temp1,int temp2);

int main(void)

{

intarr[LEN];

init_arr(arr,LEN);

show_arr(arr,LEN);

printf("开始排序\n");

sort_arr(arr,LEN);

show_arr(arr,LEN);

return0;

}

void swap(int *pArr,int temp1,int temp2)

{

inttemp;

temp=pArr[temp1];

pArr[temp1]=pArr[temp2];

pArr[temp2]=temp;

return;

}

void show_arr(int *pArr,int len)

{

int i;

for(i=0;i<len;i++)

{

printf("%d",pArr[i]);

}

printf("\n");

return;

}

void init_arr(int *pArr,int len)

{

inti;

intvalue;

for(i=0;i<len;i++)

{

printf("请输入第%d个元素的值:",i+1);

scanf("%d",&value);

pArr[i]=value;

}

return;

}

void sort_arr(int *pArr,int len)

{

inti,j;

intmin;//最小值的下标

for(i=0;i<len-1;i++)

{

min=i;

for(j=i+1;j<len;j++)

{

if(pArr[min]>pArr[j])

{

min=j;

}

}

if(i!=min)

{

swap(pArr,min,i);//这里出错了,想当然的写成了swap(pArr,min,j);出现了windows可联机检查解决解决方案这里用了没有赋值的变量j。

}

}

}

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