您的位置:首页 > 其它

(一)插入排序

2015-09-29 11:29 232 查看
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16

//插入排序 最坏时间复杂度O(n²)void sortbyinsert(int a[],int n){	int i, j, key;                    //key用于记录当前要插入的值	for (i = 1; i < n; i++)           //a[0]作为第一个元素,它是有序的,要排序的元素下标应从1到n-1;	{		key = a[i];		j = i - 1;                //a[0]到a[i-1]已经是有序的了,将a[i]插入到有序数组中		while (j>=0 && a[j]>key)  //前一个元素比要插入的元素大,则要一一后移.&&操作符的特性,保证了数组不会越界。两个表达式不应交换位置		{			a[j+1] = a[j];			j--;              //继续比较再前一个元素;		}		a[j+1] = key;             //此时的a[j]已经不大于要插入的元素了,所以合适的位置就是a[j+1];	}}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: