int i = 0; //i的初始位置
int j = arr1.length - 1; //j的初始位置
while(i != j){ //当i与j不指向一个位置的时候
if(i < j){ //当i<j时,当arr1[i]>arr1[j]交换arr1[i],arr1[j]的值
if(arr1[i] > arr1[j]) {
int tmp1 = arr1[i];
arr1[i] = arr1[j];
arr1[j] = tmp1;
int tmp2 = i; //i换到j的位置,j换到i+1的位置
i = j;
j = tmp2 + 1;
}else {
j--; //如果arr[i]>arr[j],j向前移动一个位置
}
}.....
.....
.....
比如说数组{49, 38, 65, 97, 76, 13, 27}
上面程序
已经排出{27,38,13,49,76,97,65}
然后在讲前面三个数快排,后三个数快排,怎么写代码?
这个快排解释是我在百度上搜的。
int j = arr1.length - 1; //j的初始位置
while(i != j){ //当i与j不指向一个位置的时候
if(i < j){ //当i<j时,当arr1[i]>arr1[j]交换arr1[i],arr1[j]的值
if(arr1[i] > arr1[j]) {
int tmp1 = arr1[i];
arr1[i] = arr1[j];
arr1[j] = tmp1;
int tmp2 = i; //i换到j的位置,j换到i+1的位置
i = j;
j = tmp2 + 1;
}else {
j--; //如果arr[i]>arr[j],j向前移动一个位置
}
}.....
.....
.....
比如说数组{49, 38, 65, 97, 76, 13, 27}
上面程序
已经排出{27,38,13,49,76,97,65}
然后在讲前面三个数快排,后三个数快排,怎么写代码?
这个快排解释是我在百度上搜的。
解决方案 »
- java数据结构和算法
- 成千上万条数据的临时存储……疑问?
- 请高手指导下javaScript java 还jsp 有什么本质区别啊
- 关于String 中 charAt()的问题!!!!! 急!!!
- 求CHM格式侯捷译Thinking in Java中文简体第二版
- Applet 严重无法显示 寻找原因
- 急需答案!!!
- 关于timer.cancel(),能否通过前台JSP页面输入日期参数控制它的结束?
- 在java中怎么知道一个对象占用内存的字节数?
- 大家帮忙看下,FileReader读取File为什么会出错?
- 关于JRE和JDK的区别,我还是不太明白
- 新人求教一个关于classloader动态加载类并实例化得问题的问题
public class QuickSort {
int arr[] = {1024,1,2,5,3,7,6,2,9,5}; public static void main(String args []){
new QuickSort().launch();
}
public void launch(){
//before quicksort
for (int i=0;i<10;++i){
System.out.print(arr[i]+" ");
}
System.out.println();
quickSort(arr,10);
//after quicksort
for (int i=0;i<10;++i){
System.out.print(arr[i]+" ");
}
}
//partition method, obtain the mid index
public int partition(int []arr, int left, int right){
int key = arr[left];
int i = left;
for (int j=i+1;j<=right;++j){
if (arr[j]<key){
int temp = arr[i+1];
arr[i+1] = arr[j];
arr[j] = temp;
++i;
}
}
int temp = arr[i];
arr[i] = arr[left];
arr[left] = temp;
return i;
}
//package method of quickSort()
public void quickSort(int []arr, int size){
quickSort(arr,0,size-1);
}
//recursion calls of quickSort
public void quickSort(int []arr, int left, int right){
if (left>=right) return;
int mid = partition(arr,left,right);
quickSort(arr,left, mid);
quickSort(arr,mid+1,right);
}
}