黑马程序员技术交流社区
标题:
学习心得——选择排序
[打印本页]
作者:
行我福
时间:
2015-1-24 22:53
标题:
学习心得——选择排序
选择排序,同样是一种较为简单的和容易实现的排序方法,下面介绍这种方法排序的实现。首先确定排序规则,然后给定数组的第一个数为基准,将其后的数依次与其比较,根据排序规则来确定是否交换两个数。
以下以升序为例。
思路分析~
第一轮:以第一个数位基准,从第二个数开始,将后面的数据与第一个数一一比较,若有比第一个数还小的,则将与之交换,直到比较到最后一个数为止。
第二轮:由于第一轮比较结束后,第一个数是给定排序中最小的数,因此第二轮以第二个数为基准,将其后数依次与其比较,满足条件则交换,直到比较到最后一个数为止。
重复以上操作,直到倒数第二个数为基准,进行最后一轮比较操作结束。
以下是实现代码:
#include <stdio.h>
void sort(int a[],int n)
{
int i,j,k,tmp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[k])
k=j;
}
if(k!=i)
{
tmp=a[i];
a[i]=a[k];
a[k]=tmp;
}
}
}
int main()
{
int i;
int a[5]={32,12,56,78,43};
printf("Before Sort\n");
for(i=0;i<5;i++)
{
printf("%d\t",a[i]);
}
sort(a,5);
printf("\nAfter Sort\n");
for(i=0;i<5;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
复制代码
原运行的结果:
sort.png
(2.24 KB, 下载次数: 33)
下载附件
运行结果
2015-1-24 22:24 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2