算法--排序(冒泡,选择,插入,快速)(二)

2014-11-24 11:07:24 · 作者: · 浏览: 1
;
int j = right;
int middle = pData[left];
while(true){
while((++i)
while((--j)>left && pData[j]>middle);
if(i>=j)
break;
temp = pData[i];
pData[i] = pData[j];
pData[j] = temp;
}
pData[left] = pData[j];
pData[j] = middle;
if(left
kuaiSu(pData,left,j);
if(right>i)
kuaiSu(pData,i,right);
}
六、归并排序
6.1 概念
将两个已经排序的序列合并成一个序列的操作。
归并排序算法依赖归并操作。
6.2 运作
归并操作的过程如下:
1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
2、设定两个指针,最初位置分别为两个已经排序序列的起始位置
3、比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
4、重复步骤3直到某一指针达到序列尾
5、将另一序列剩下的所有元素直接复制到合并序列尾
平均时间复杂度 最差空间复杂度 最佳算法
Ο(n log n) O(n) 有时是