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}
然后在讲前面三个数快排,后三个数快排,怎么写代码?
这个快排解释是我在百度上搜的。
解决方案 »
- 关于readLine()的小问题
- java.util.Arrays的 binarySearch
- 最近在做图书管理系统,怎么实现借书还书的功能?
- 为什么这段代码会这么慢
- 如何添加JTable鼠标双击事件,实现双击一行弹出Frame?
- 关于XML解析的简单疑问,敬请指点:
- 谁能解释一下parseInt(String s,int radix),
- java包的几个基本问题
- 有没有可以从已知图片里过滤出,不规则图片的滤镜??
- 请大家帮个忙- 如何用javascript或vbscript 判定某超连结是否被访问?
- jTabbedPane重复打开的问题
- Extjs 中当点击treePanel 中间tabPanel 不显示数据
设arr1[0]为关键字key,拿key=49与最后一个比较也就是27比,如果比key小就交换位置比后的数列 为 27 38 65 97 76 13 49
这i++ 拿49与 arr1[1]=38比 49 38<key
27 38 65 97 76 13 49i++ arr1[2]=65 65>key 交换位置
27 38 49 97 76 13 65key 与13比 key>13 交换位置
27 38 13 97 76 49 65key与97比 key<97 交换位置
27 38 13 49 76 97 65再依次递归 做 ~~~~主要的代码是:
void quickSort(int low, int high)
{
int pivotpos;
if(low<high)
{
pivotpos = partition(low,high);
quickSort(low,pivotpos-1);
quickSort(pivotpos+1,high);
}
} int partition(int low, int high)
{
int p = b[low];
while(low<high)
{
while(low<high&&b[high]>=p)
high--;
if(low<high)
b[low++]=b[high];
while(low<high&&b[low]<=p)
low++;
if(low<high)
b[high--]=b[low];
}
b[low] = p;
return low;
}