常见的排序算法:
1.算法思想
将待排序记录分为已排序记录和未排序记录,每次将未排序记录的第一个元素加入到已排序记录中。由于已排序记录有序,因此只需找到该元素在已排序记录中的位置,然后将该位置之后的元素全部往后移一位,再将该元素插入即可。
2.测试结果
//测试样例
int a[]= {49,38,65,97,76,13,27,49};
结果如下:
3.完整代码
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 20
//直接插入排序(升序)
void insertSort(int a[], int len) {
int i,j,temp;
//开始进行插入排序
for(i=1; i<len; i++) {
//如果当前值比已排序值的最后一位小,说明需要将该值插入到已排序序列中
//否则说明该值满足升序要求,直接将其添加到已排序序列中
if(a[i]<a[i-1]) {
temp = a[i];
//开始调整已排序序列
for(j=i-1; temp<a[j] && j>=0; j--) {
a[j+1]=a[j];
}
a[j+1] = temp;//将temp插入到排序后的位置
}
}
}
int main() {
int a[]= {49,38,65,97,76,13,27,49};
int len = sizeof(a) / sizeof(a[0]);
int i;
printf("排序前为:\n");
for(i=0; i<len; i++) {
printf("%d\t",a[i]);
}
insertSort(a,len);
printf("\n排序后为:\n");
for(i=0; i<len; i++) {
printf("%d\t",a[i]);
}
return 0;
}