选择排序的工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。
给你一个我写的例子(C语言程序设计案例教程(廖湖声) P122 第四章 上机练习 第一题):网页链接看着这个自己修改一下,学习效果更佳。你可以放到codeblocks中用执行,并用菜单中的Debug->Debugging windows->watches来看变量的变化,加油。
-------------------------
#include <stdio.h>
//简单选择排序
void SelectSort(int r[ ], int n)
{
int i;
int j;
int index;
int temp;
for (i=0; i<n-1; i++) //对n个记录进行n-1趟简单选择排序
{
index=i;
for (j=i+1; j<n; j++) //在无序区中选取最小记录
if (r[j]<r[index])
index=j;
if (index!=i)
{
temp=r[i];
r[i]=r[index];
r[index]=temp;
}
}
}
void main()
{
int num[20];
int a,b,c,t;
for (c=0;c<10;c++)
scanf("%d",&num[c]);
SelectSort(num,10);//调用用SelectSort(num,10)即可
for(c=0;c<10;c++)
printf("%d ",num[c]);
getch();
}
-------------------------
排序有很多种算法。我就随便给你来一个吧。
#include <stdio.h>
void Sort(int k[])
{
int x=0,j1,j;
for(j1=0;j1<9;j1++)
{
j=j1+1;
for(j;j<10;j++)
{
if(k[j1]<k[j])
{
x=k[j1];
k[j1]=k[j];
k[j]=x;
}
}
}
for(j=0;j<10;j++)
printf("%d\t",k[j]);
}
int main()
{
int k[10]={84,34,66,45,77,387,57,88,47,32};
Sort(k);//子函数算法
/*int x=0,j1,j;//直接实现
int k[10]={84,34,66,45,77,387,57,88,47,32};
for(j1=0;j1<9;j1++)
{
j=j1+1;
for(j;j<10;j++)
{
if(k[j1]<k[j])
{
x=k[j1];
k[j1]=k[j];
k[j]=x;
}
}
}
for(j=0;j<10;j++)
printf("%d\t",k[j]);
*/
return 0;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。