1. 程式人生 > >排序演算法之插入排序及其C語言程式碼實現

排序演算法之插入排序及其C語言程式碼實現

概述 
一個插入排序是另一種簡單排序,它的思路是:每次從未排好的序列中選出第一個元素插入到已排好的序列中。

它的演算法步驟可以大致歸納如下: 
1. 從未排好的序列中拿出首元素,並把它賦值給temp變數; 
2. 從排好的序列中,依次與temp進行比較,如果元素比temp大,則將元素後移(實際上放置temp的元素位置已經空出) 
3. 直到找到一個元素比temp小, 將temp放入該位置; 
時間複雜度:o(n^2) 
核心程式碼實現:

void Insertion_Sort(int a[],int n)
{
    int i,j;
    for(i=1;i<n;i++)
    {
        int
temp=a[i]; for(j=i;j>0&&a[j-1]>temp;--j) a[j]=a[j-1]; a[j]=temp; } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

具體樣例:

#include <stdio.h>
void Insertion_Sort(int a[],int n)
{
    int i,j;
    for(i=1;i<n;i++)
    {
        int temp=a[i];
        for(j=i;j>0&&a[j-1]>temp;--j)
            a[j]=a[j-1
]; a[j]=temp; } } int main() { int a[]={1,3,63,5,78,9,12,52,8}; int n=sizeof(a)/sizeof(int),i; Insertion_Sort(a,n); for(i=0;i<n;i++) printf("%d ",a[i]); return 0; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

執行結果: