直接插入排序

直接插入排序(Insertion Sort)

基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。
直接插入排序图像解释

代码实现C语言版

#include<stdio.h>

void InsertSort(int R[], int n)
{
    int i, j, k;
    int temp;
    for(i=1; i<n; i++)
    {
    j = i - 1;
    temp = R[i];
    while(j>=0 && temp < R[j])
    {
        R[j+1] = R[j];
        j--;
    }
    R[j+1] = temp;
    
    printf("the %d times:", i);
    for(k=0; k<9; k++)
    {
        printf("%d ", R[k]);
    }
    printf("\n");
    }
    
}


int main()
{
    int a[9] = {9, 3, 1, 4, 2, 7, 8, 6, 5};
    int i;

    printf("begin\n");
    printf("before:");
    for(i=0; i<9; i++)
    {
    printf("%d ", a[i]);
    }
    printf("\n\n");
    printf("InsertSort...\n");
    InsertSort(a, 9);
    printf("\nafter:");
    for(i=0; i<9; i++)
    {   
       printf("%d ", a[i]);
    }
    printf("\nend\n");

    return 0;
}

输出结果:


插入排序C语言版输出结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,742评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,215评论 0 52
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,292评论 0 35
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,271评论 0 2
  • 他说:“我喜欢你,但是我们的差距太大,终究也走不下去,所以就仅止于此吧。”我不能说指责他太现实亦或是不够爱,只是深...
    莫希风阅读 113评论 0 2