排序算法 之 (直接插入排序)
10.1、直接插入排序
算法思想的图示
直接插入排序C代码实现
#include <stdio.h>
#include <stdlib.h>
#define boolean int
#define false 0;
#define true 1;
//nums:待排序数组,length:数组长度
boolean InsertSort(int nums[],int length){
if(length == 0) return false;
int temp;//交互时的中间变量
for(int i = 1;i < length;i++){
temp = nums[i];
int j = i-1;//子序列的最后一个开始比较
for(j = i-1;j >= 0;j--){
if(nums[j] > temp){
nums[j+1] = nums[j];//比当前这个位置数大就后移
}else{
break;//否则直接跳出
}
}
nums[j+1] = temp;//放到相应位置上
}
}
int main(){
int nums[] = {49,38,65,97,76,13,27,49};
int length = 8;
printf("排序前:");
for(int i = 0; i < length ;i++){
printf("%d ",nums[i]);
}
InsertSort(nums,length);
printf("\n");
printf("排序后:");
for(int i = 0; i < length ;i++){
printf("%d ",nums[i]);
}
return 0;
}
//结果:
排序前:49 38 65 97 76 13 27 49
排序后:13 27 38 49 49 65 76 97