怎样用java实现一种快速排序? 请大家帮帮忙.小弟刚学java. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class QuickSortSimpleVersion { private long[] data; private int len; public QuickSortSimpleVersion(int max) { data = new long[max]; len = 0; } public void insert(long value) { data[len] = value; len++; } public void display() { System.out.print("Data"); for (int j = 0; j < len; j++) System.out.print(data[j] + " "); System.out.println(""); } public void quickSort() { recQuickSort(0, len - 1); } public void recQuickSort(int left, int right) { if (right - left <= 0) // if size <= 1 already sorted return; else // size is 2 or larger { long pivot = data[right]; // rightmost item // partition range int partition = partitionData(left, right, pivot); recQuickSort(left, partition - 1); // sort left side recQuickSort(partition + 1, right); // sort right side } } public int partitionData(int left, int right, long pivot) { int leftPtr = left - 1; // left (after ++) int rightPtr = right; // right-1 (after --) while (true) { // find bigger item while (data[++leftPtr] < pivot) ; // find smaller item while (rightPtr > 0 && data[--rightPtr] > pivot) ; if (leftPtr >= rightPtr) // if pointers cross, partition done break; else swap(leftPtr, rightPtr); } swap(leftPtr, right); // restore pivot and return pivot location return leftPtr; } public void swap(int d1, int d2) { long temp = data[d1]; data[d1] = data[d2]; data[d2] = temp; } public static void main(String[] args) { int maxSize = 16; // array size QuickSortSimpleVersion arr = new QuickSortSimpleVersion(maxSize); // create array for (int j = 0; j < maxSize; j++) // fill array with random numbers { long n = (int) (java.lang.Math.random() * 99); arr.insert(n); } arr.display(); arr.quickSort(); arr.display(); }} 新手 求一个jsp项目源码 学习 关于static方法的迷惑 Calendar的问题,大家帮帮忙 关于命令运行窗口的问题!!--在线等待 request与session这两个内建对象有什么区别 刚学java,想实现一下n的m次幂运算的程序!好用就结帖!200分!!!!!!!急 xiaoxhui(飞)请来接分,只有20分了 Java线程、集合大家用的多吗?用在哪?主要是用了哪些内容?有没有好的经验总结呢? 各位大虾,请看看我的package问题。 谁有iText的文档啊? 反编译出来的代码有错误.... 如何解决???? 请教关于读取properties文件字符编码转换问题!!!
private long[] data; private int len; public QuickSortSimpleVersion(int max) {
data = new long[max];
len = 0;
} public void insert(long value) {
data[len] = value;
len++;
} public void display() {
System.out.print("Data");
for (int j = 0; j < len; j++)
System.out.print(data[j] + " ");
System.out.println("");
} public void quickSort() {
recQuickSort(0, len - 1);
} public void recQuickSort(int left, int right) {
if (right - left <= 0) // if size <= 1 already sorted
return;
else // size is 2 or larger
{
long pivot = data[right]; // rightmost item
// partition range
int partition = partitionData(left, right, pivot);
recQuickSort(left, partition - 1); // sort left side
recQuickSort(partition + 1, right); // sort right side
}
} public int partitionData(int left, int right, long pivot) {
int leftPtr = left - 1; // left (after ++)
int rightPtr = right; // right-1 (after --)
while (true) { // find bigger item
while (data[++leftPtr] < pivot)
;
// find smaller item
while (rightPtr > 0 && data[--rightPtr] > pivot)
; if (leftPtr >= rightPtr) // if pointers cross, partition done
break;
else
swap(leftPtr, rightPtr);
}
swap(leftPtr, right); // restore pivot and return pivot location
return leftPtr;
} public void swap(int d1, int d2) {
long temp = data[d1];
data[d1] = data[d2];
data[d2] = temp;
} public static void main(String[] args) {
int maxSize = 16; // array size
QuickSortSimpleVersion arr = new QuickSortSimpleVersion(maxSize); // create array for (int j = 0; j < maxSize; j++) // fill array with random numbers
{
long n = (int) (java.lang.Math.random() * 99);
arr.insert(n);
}
arr.display();
arr.quickSort();
arr.display();
}}