快速排序二

在划分的基础上进行快速排序:

思路:递归调用快速排序(recQuickSort(left,right))方法,pivot选取节点right的值(改进时可以将pivot设置为数据项最左端,最右端,和中间值的平均值)

if(left<=right)

   return;

else {
  int pivot = arr[right];
  int position = partitionIt(left, right, pivot);
  recQuickSort(left, position - 1);
  recQuickSort(position + 1, right);
}

 

 

源代码:

package com.quickSort;

public class ArrayIns {

private int nElems;
private int[] arr;

public ArrayIns(int max) {
arr = new int[max];
nElems = 0;
}

public int size() {
return nElems;
}

public void insert(int value) {
arr[nElems++] = value;
}

public void display() {
for (int i = 0; i < nElems; i++)
System.out.print("the" + i + "Elem is " + arr[i] + " ");
}

public void quickSort() {
recQuickSort(0, nElems - 1);
}

public void recQuickSort(int left, int right) {
if (right - left <= 0)
return;
else {
int pivot = arr[right];
int position = partitionIt(left, right, pivot);
recQuickSort(left, position - 1);
recQuickSort(position + 1, right);
}
}

public int partitionIt(int left, int right, int pivot) {
int leftPtr = left - 1;
int rightPtr = right;

while (true) {
while (leftPtr < right && arr[++leftPtr] < pivot)
;
while (rightPtr > left && arr[--rightPtr] > pivot)
;
if (leftPtr >= rightPtr)
break;
else
swap(leftPtr, rightPtr);
}
swap(leftPtr, right);
return leftPtr;
}

public void swap(int leftValue, int rightValue) {
int temp;
temp = arr[rightValue];
arr[rightValue] = arr[leftValue];
arr[leftValue] = temp;
}
}

 

package com.quickSort;

public class QuickSort1App {
public static void main(String[] args){
int maxSize = 10;
ArrayIns arr = new ArrayIns(maxSize);

for(int i=0;i<maxSize;i++){
int n = (int)(Math.random() * 99);
arr.insert(n);
}
arr.display();
System.out.println();
arr.quickSort();
arr.display();
}
}

转载于:https://www.cnblogs.com/xunmengyoufeng/archive/2012/10/06/2712828.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值