读书人

各排序步骤比较

发布时间: 2012-11-05 09:35:12 作者: rapoo

各排序方法比较
断断续续地看了《JAVA数据结构与算法》,一直没有好好整理下,久了就忘记了。这里把排序的笔记记录如下(代码都出自《JAVA数据结构与算法》):
1、冒泡排序:
(1)思想:从左边第一个数据项开始,跟其右边的数据项比较,如果左边的数值大于右边的,则进行交换,这样直到最后一个结束,一次循环就把最大的数放在最右边。第二次同样,到右边的倒数第二个结束,以此类推。直到所有的数据项有序。
(2)代码:

public void recQuickSort(int left, int right) {if (left >= right)return;else {long pivot = a[right]; // 取最右边的值为要划分的中间值关键字int partition = partitionIt(left, right, pivot); // 关键字所在位置recQuickSort(left, partition - 1);// 对关键字左边进行快速排序recQuickSort(partition + 1, right);}}public int partitionIt(int left, int right, long pivot) {int leftPtr = left - 1;int rightPtr = right;while (true) {while (leftPtr < right && a[++leftPtr] < pivot); // 找到左边区域小于关键字的位置while (rightPtr > left && a[--rightPtr] > pivot);if (leftPtr >= rightPtr)break;else {swap(leftPtr, rightPtr);// 将找到的左右关键字交换}}swap(leftPtr, right);return leftPtr;}

(3) 复杂度: O(N*logN)

读书人网 >编程

热点推荐