排序算法 之 (直接插入排序)

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 
posted @ 2022-11-15 11:29  水三丫  阅读(29)  评论(0编辑  收藏  举报