码迷,mamicode.com
首页 > 编程语言 > 详细

直接插入排序

时间:2019-09-20 00:32:01      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:有一个   初始   直接插入   关键字   close   直接插入排序   注意   状态   依次   

技术图片
/******************************
直接插入排序:S=O(1);T=O(n*n);
比较次数取决于待排序的初始状态。
稳定的排序
*******************************/
#include <stdio.h>

int main()
{
    int a[11],i; //注意是a[11],而不是a[10],因为InsertSort函数中A[0]是不存放元素的
    printf("请输入10个数据:\n");
    for(i=1;i<11;i++)
        scanf("%d",&a[i]);
    InsertSort(a,10);
    printf("插入排序后的序列为:\n");
    for(i=1;i<11;i++)
        printf("%d ",a[i]);
    return 0;
}
int InsertSort(int A[],int n)
{
    int i,j;
    for(i=2;i<=n;i++) //A[0]是哨兵,不存放元素,A[1]只有一个元素,无需比较,所以i从2开始。
    { //共有n个元素,进行n-1趟循环,依次将A[2]-A[n]插入到前面已排序序列
        if(A[i]<A[i-1]) //若A[i]的关键字码小于其前驱,需将[i]插入有序表
        {
            A[0] = A[i]; //将A[i]的关键字复制给A[0]
            for(j=i-1;A[j]>A[0];j--)//查找带插入位置
                A[j+1] = A[j]; //向后挪位
            A[j+1] = A[0];//插入到带插入位置
        }
    }
}
View Code

 

直接插入排序

标签:有一个   初始   直接插入   关键字   close   直接插入排序   注意   状态   依次   

原文地址:https://www.cnblogs.com/spore/p/11553138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!