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
  • 相关阅读:
    RGB空间与HSV空间的相互转换(C++实现,修正网上大多数的代码错误)
    SLIC superpixel实现分析
    开发自己PHP MVC框架(一)
    C++ 直方图匹配算法代码
    准确率与召回率
    Github干货系列:C++资源集合-
    ezw证件照芯片压缩算法
    格拉姆-施密特正交化
    [轉]sendpage漏洞分析 CVE-2009-2692
    ptrace
  • 原文地址:https://www.cnblogs.com/wufengv5/p/3084948.html
Copyright © 2011-2022 走看看