选择排序
1. 定义
选择排序(升序)想法:
两重循环,第一个循环中,每一次循环将当前元素标记为最小值,通过第二个循环遍历未排序的剩余元素,如果有小于当前最小值,则进行交换。
即每一交换都能将剩余的最小值排到前排相应位置,循环n-1次排好。
2. c代码
#include<stdio.h>
void xuanze(int *,int);
int main(){
int a[100];//定义一个足够大的数组
int len,i;
scanf("%d",&len);//输入的数目
for(i=0;i<len;i++)//输入数据
scanf("%d",&a[i]);
xuanze(a,len); //调用选择排序
return 0;
}
void xuanze(int *a,int len){
int i,j,temp;
for(i=0;i<len-1;i++){//控制趟数
int min=i; //排a[i]的位置
for(j=i+1;j<len;j++){//在i后未排序的进行遍历
if(a[j]<a[min]){
temp=a[j];
a[j]=a[i];
a[i]=temp;
min=j;
}
}
}
for(i=0;i<len;i++)//输出
printf("%d ",a[i]);
printf("\n");
}
输入 6个数 6 1 2 4 3 5
结果:1 2 3 4 5 6
3. 优化