zoukankan      html  css  js  c++  java
  • 插入排序算法

    算法描述如下:

    1.从第一个元素开始,该元素可以认为已经被排序

    2.取出下一个元素,在已经排序的元素序列中从后向前扫描

    3.如果该元素(已排序)大于新元素,将该元素移到下一位置

    4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

    5.将新元素插入到该位置后

    6.重复步骤2~5

    代码如下:

    InsertionSort.c文件如下:

    #include "InsertionSort.h"
    
    void InsertionSort(int nArray[],int n)
    {
        int i,j;
        int temp;
        for(j=1;j<n;j++)//默认为数组的最小长度是1,其实数组的长度可以是0的
        {
            temp = nArray[j];
    
            for(i=j-1;i>=0;i--) //for循环用于交换元素
             {
                if(nArray[i]>temp)
                    nArray[i+1]=nArray[i];
                else
                    break;
            }
            nArray[i+1]=temp;//被排序数放到正确的位置
        }
    }

    InsertionSort.h文件如下:

    #ifndef _INSERTION_H_
    #define _INSERTION_H_
    
    void InsertionSort(int nArray[],int n);
    
    #endif //_INSERTION_H_

    Test.c文件如下:

    #include "InsertionSort.h"
    #include <stdio.h>
    
    int main()
    {
        int i;
        int nArray[]={1, 9, 5, 6, 8};
    
        InsertionSort(nArray,sizeof(nArray)/sizeof(*nArray));
    
        for(i=0;i<5;i++)
        {
            printf("%d ",nArray[i]);
        }
        return 0;
    }


     

    Python代码InsertionSort.py如下:

    #!/usr/bin/python
    
    Numbers = [3,1,9,4,7,0,2,5,6]
    print Numbers
    Len = len(Numbers)
    m = 1
    while m < Len:
        temp = Numbers[m]
        n = m-1
        while n >= 0:
            if Numbers[n] > temp:
                Numbers[n+1] = Numbers[n]
                n-=1
            else:
                break
        Numbers[n+1]=temp
        m+=1
    
    print Numbers
  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1036. Boys vs Girls (25)
    1035 Password (20)
    1027 Colors in Mars (20)
    1009. Product of Polynomials (25)
    1006. Sign In and Sign Out
    1005 Spell It Right (20)
    1046 Shortest Distance (20)
    ViewPager页面滑动,滑动到最后一页,再往后滑动则执行一个事件
    IIS7.0上传文件限制的解决方法
  • 原文地址:https://www.cnblogs.com/wufengv5/p/3084948.html
Copyright © 2011-2022 走看看