简单了解C语言中直接插入排序与直接选择排序实现
直接插入排序
基本思路:
1.从a[0]开始,也就是从1个元素开始是有序的,a[1]~a[n-1]是无序的。
2.从a[1]开始并入前面有序的数组,直到n-1。
#include<stdio.h>
#defineN5
voidinsertsort(inta[],intn);
voidswap(int*x,int*y);
voidinsertsort(inta[],intn){
inti,j;
for(i=1;i<n;i++){
for(j=i;j>0&&a[j]<a[j-1];j--){
swap(&a[j],&a[j-1]);
}
}
}
voidswap(int*x,int*y){
inti=*x;
*x=*y;
*y=i;
}
intmain(void){
inta[N]={2,5,3,1,8};
insertsort(a,N);
inti;
for(i=0;i<N;i++)
printf("%d",a[i]);
return0;
}
直接选择排序
基本思路:
1.从1开始通过对比找出最小的数的下标。然后把这个下标的值和0交换。
2.循环把值交换到123...n-1。
#include<stdio.h>
#defineN5
voidselectsort(inta[],intn);
voidswap(int*x,int*y);
voidselectsort(inta[],intn){
inti,j;
for(i=0;i<n;i++){
intmin=i;
for(j=i+1;j<n;j++){
if(a[j]<a[min]){
min=j;
}
}
swap(&a[i],&a[min]);
}
}
voidswap(int*x,int*y){
inti=*x;
*x=*y;
*y=i;
}
intmain(void){
inta[N]={2,5,3,1,8};
selectsort(a,N);
inti;
for(i=0;i<N;i++)
printf("%d",a[i]);
return0;
}
热门推荐
6 保研的祝福语简短
10 年轻20岁祝福语简短
11 朋友结婚祝福语信息简短
12 女孩婚礼贺卡祝福语简短
13 30段点歌简短祝福语
14 虎年春节祝福语图文简短
15 写给后妈祝福语大全简短
16 简短回复生日祝福语
17 校长送毕业祝福语简短
18 毕业立体贺卡祝福语简短