插入排序算法

算法描述如下:

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

 

 

 

 

 

posted @ 2013-05-18 09:31  独墅一枝花  阅读(159)  评论(0编辑  收藏  举报