• 数据结构_直接插入排序法


     详细见这篇博客:http://www.cnblogs.com/skywang12345/p/3596881.html

    直接插入排序介绍

          直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。

          总结:三个for循环(完全个直接插入排序一模一样的思路,一个for循环找到直接插入的位置,一个for循环后移)

    自己完成的完整代码:

    #include"stdio.h"
    
    /*
     * 直接插入排序
     * 2015-08-10:May
     * 参数说明:
     *     a -- 待排序的数组
     *     n -- 数组的长度
     */
    void insert_sort(int a[], int n)
    {
        int i, j, k;
        for(i=1;i<n;i++)
        {
            for(j=i-1;j>=0;j--)
            {
                if(a[i]>a[j])
                {
                  break;//找到位置了,找到大于某个位置的地方就停下
                }
            }
            if(j!=i-1) // 找到位置了开始将位置后面的往后移,如果恰好就不用移动
            {
                int temp=a[i];//先将要插入的存起来,会被覆盖
                for(k=i-1;k>j;k--)
                {
                    a[k+1]=a[k]; //都往后移动
                }
                a[j+1]=temp;  //插入进来;
            }
    
        }
    
    
    
    }
    void main(void)
    {
        int a[]={5,8,3,1,12,1};
        insert_sort(a,6);
        for(int k=0;k<6;k++)
        {
          printf("%d ",a[k]);
        }
    
    
    }
  • 相关阅读:
    LeetCode "Minimum Moves to Equal Array Elements"
    LeetCode "Third Maximum Number"
    LeetCode "Arranging Coins"
    LeetCode "Is Subsequence"
    HackerRank "Flatland Space Stations"
    LeetCode "Super Pow"
    LeetCode "Wiggle Subsequence" !
    HackerRank "Jumping on the Clouds"
    HackerRank "Fair Rations"
    HackerRank "Equal Stacks"
  • 原文地址:https://www.cnblogs.com/snowwhite/p/4719450.html
Copyright © 2020-2023  润新知