本文是根據網易公開課上麻省理工大學老師講的再寫的,視頻雖然只有100多分鐘,但是我看了3個多小時!因爲他講的每一句話我都會分析它究竟要講什麼!希望看博客的朋友也看一下!http://www.hjenglish.com/wangyiopencourse/suanfadaolun/
插入排序的時間複雜度:T(n)=O(n^2)
#include<stdio.h>
#define maxn 100
int array[maxn];
void insertion_sort(int array[], int first, int last)
{
int i,j;
int temp;
for (i = first+1; i<=last;i++)
{
temp = array[i];
j=i-1;
//與已排序的數逐一比較,大於temp時,該數向後移
while((j>=first) && (array[j] > temp)) //當first=0,j循環到-1時,由於[[短路求值]],不會運算array[-1]
{
array[j+1] = array[j];
j--;
}
array[j+1] = temp; //被排序數放到正確的位置
}
}
int main()
{
// /*
int s,n=0;
while(scanf("%d",&s)==1)
{
array[n++]=s;
insertion_sort(array,0,n-1);
for(int i=0;i<n;i++)
printf("%d ",array[i]);
printf("\n");
}
//*/
/*
int array[6]={8,2,4,9,3,6};
insertion_sort(array,0,5);
for(int i=0;i<6;i++)
printf("%d ",array[i]);
printf("\n");
//*/
return 0;
}