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

直接插入排序

时间:2017-04-25 10:03:40      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:span   clu   insert   插入   turn   移动   索引   pre   []   

#include "stdafx.h"

void insertSort(int* array,int len ) 
{
    // [0,i-1]   [i,n-1]
    // 直接插入排序: [0,i-1]是已排序的序列 [i,n-1]是没有排序的序列
    // 算法的核心思想:在已排序序列的[0,i-1]找到合适的位置插入当前要排序的元素i。
    // 分两种情形:
    // 1、元素i大等于i-1,那么序列[0,i-1]不需要移动,[0,i]就已经是已排序序列
    // 2、元素索引x大于元素i,继续找索引x前面一个元素,直到找到索引x-1比元素i要小,
    //    也就是找到一个比它后面一个元素大,比它前面的一元素小的位置,把当前元素i插入

    int i,j,temp;
    for( i = 1; i < len ;i++ )
    {
        temp = array[i];
        for( j = i - 1;(j >= 0)  && (array[j] > temp); j-- )
        {
            array[j+1] = array[j];
        }
        if( j != i - 1)
        {
            array[j+1] = temp;
        }
    }
}

int main(int argc, char* argv[])
{
    int a[]={12,54,6,3,4,6,76,33};
    int i;
    insertSort(a,sizeof(a)/sizeof(a[0]));

    for( i = 0 ; i < sizeof(a)/sizeof(a[0]);i++ )
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}
  

 

直接插入排序

标签:span   clu   insert   插入   turn   移动   索引   pre   []   

原文地址:http://www.cnblogs.com/tinyos/p/6760030.html

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