简单了解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;
}
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语