本文是根据网易公开课上麻省理工大学老师讲的再写的,视频虽然只有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;
}