最近小弟遇到个题...是说怎么结合快速排序和插入排序..麻烦哪位大虾帮帮写个..一个数组,比如说是[2,7,3,4,6,9,7,8,6,3,1,4,9]
ps是一个变量,当ps<=4时,意味着前4个数用插入排序.
当ps 大于4时,用插入排序,让左右两边递归到ps<=4的情况。
ps是一个变量,当ps<=4时,意味着前4个数用插入排序.
当ps 大于4时,用插入排序,让左右两边递归到ps<=4的情况。
解决方案 »
- 急求解答
- 急~HTML代码生成PDF文档?
- 高手们帮小弟找下错误
- eclipse怎么创建java application源文件
- JDK 1.6 Date 类中年份超过9999时,为何只显示最后的三个数字??
- Java能不能做成这样呢?谢谢大家,都很多天了?
- DISPOSE_ON_CLOSE 与 HIDE_ON_CLOSE的区别
- 请问VisualAge for Java 中有没有Jbuilder中的输入对象名后按点键就出现方法提示的功能?如有怎么实现?
- 请问在类中的{ //do something// }和static { //do something//}有什么区别啊?
- *.jar文件怎么用命令行打开啊
- 如何查找某字符串在整个字符串里的所有位置
- 送分 参数传递中 Integer类型传的是地址还是值
import java.util.Random;public class Sort { // 快速排序
public static void qsort(int[] data, int left, int right) {
int l = left;
int r = right;
int m = data[left]; while (true) {
while (data[l] < m) {
l++;
}
while (data[r] > m) {
r--;
}
if (l < r) {
int temp = data[l];
data[l] = data[r];
data[r] = temp;
l++;
r--;
} else {
break;
}
} if (left < r) {
// 递归到数组长度小于等于10用插入 否则继续用快速递归
if (r - left + 1 <= 10) {
sort(data, left, l - 1);
} else {
qsort(data, left, l - 1);
}
}
if (right > l) {
// 递归到数组长度小于等于10用插入 否则继续用快速递归
if (right - l + 1 <= 10) {
sort(data, r + 1, right);
} else {
qsort(data, r + 1, right);
}
}
} // 插入排序
public static void sort(int[] data, int left, int right) {
for (int i = left; i <= right; i++) {
for (int j = left; j < i; j++) {
if (data[i] < data[j]) {
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
} // 用户接口
public static void qsort(int[] data) {
if (data.length <= 10) { // ps=10
sort(data, 0, data.length - 1);
} else {
qsort(data, 0, data.length - 1);
}
} // 验证数组是否为升序
public static boolean validate(int[] data) {
for (int i = 0; i < data.length - 1; i++) {
if (data[i + 1] < data[i]) {
return false;
}
}
return true;
} public static void main(String[] args) throws Exception {
Random r = new Random();
int[] data = new int[10000];
for (int i = 0; i < data.length; i++) {
data[i] = r.nextInt(100);
} Sort.qsort(data); for (int i = 0; i < data.length; i++) {
System.out.println(data[i] + " ");
}
System.out.println("数组是否为升序: " + validate(data));
}
}
等我改改