选择排序,同样是一种较为简单的和容易实现的排序方法,下面介绍这种方法排序的实现。首先确定排序规则,然后给定数组的第一个数为基准,将其后的数依次与其比较,根据排序规则来确定是否交换两个数。
以下以升序为例。
思路分析~
第一轮:以第一个数位基准,从第二个数开始,将后面的数据与第一个数一一比较,若有比第一个数还小的,则将与之交换,直到比较到最后一个数为止。
第二轮:由于第一轮比较结束后,第一个数是给定排序中最小的数,因此第二轮以第二个数为基准,将其后数依次与其比较,满足条件则交换,直到比较到最后一个数为止。
重复以上操作,直到倒数第二个数为基准,进行最后一轮比较操作结束。
以下是实现代码:
- #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;
- }
复制代码 原运行的结果:
|