前面一篇文章已经讲到了三个比较简单的排序算法,现在准备说一下比较高级一点的两个算法,他们在数据量比较大的时候的效果还是很明显的,我这里给出java的实现代码。
1.快速排序
过程:将待排序的第一个数作为标志temp,然后开始比较,i指向第一个数,j指向最后一个数,最开始j指向的数和temp比较,如果j比较大,j往左移动,否则i和j的数字交换,并且i开始想右边移动,知道i=j,完成一趟。一趟执行完了之后这个数就在正确的位置上面,即它不小于它左边的数,同时不大于它右边的数。
同样有一个Test类获取比较的数组。
public class Test {
//通过scan一个一个读入数据,获取输入的数组
public List Input() {
List list = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
int length = 0;//数组长度
System.out.print("输入数组长度:");
length = scanner.nextInt();
System.out.print("输入排序数组:");
int count = 0;
while (length != count) {
list.add(scanner.nextInt());
count++;
}
System.out.print("输入的数组为:");
for (int j = 0; j < list.size(); j++) {
System.out.print(list.get(j) + " ");
}
return list;
}
public List getRandomInput() {
List list = new ArrayList<>();
System.out.print("输入随机数个数:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.print("so