排序演算法之插入排序及其C語言程式碼實現
阿新 • • 發佈:2019-01-10
概述
一個插入排序是另一種簡單排序,它的思路是:每次從未排好的序列中選出第一個元素插入到已排好的序列中。
它的演算法步驟可以大致歸納如下:
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
執行結果: