java算法面试题:排序都有哪几种方法?请列举。用JAVA实现一个快速排序。选择冒泡快速集合至少4种方法排序

package com.swift;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class QuickSort {
/*
* 快速排序
*/ public static void main(String[] args) {
String[] strVoid = new String[] {"11", "66", "22", "0", "55", "22", "0", "32"};
QuickSort sort = new QuickSort();
sort.quickSort(strVoid, 0, strVoid.length - 1);
for (int i = 0; i < strVoid.length; i++) {
System.out.println(strVoid[i] + " ");
}
//用比较器排序
List<String> list=new ArrayList<String>();
for(String str:strVoid) {
list.add(str);
}
Collections.sort(list,new Comparator<String>() { @Override
public int compare(String arg0, String arg1) {
int num=arg1.compareTo(arg0);
return num;
} });
for(String str:list) {
System.out.print(str+" | ");
}
} public void quickSort(String[] strDate, int left, int right) {
String middle, tempDate;
int i, j;
i = left;
j = right;
middle = strDate[(i + j) / 2];
do {
while (strDate[i].compareTo(middle) < 0 && i < right)
i++; // 找出左边比中间值大的数
while (strDate[j].compareTo(middle) > 0 && j > left)
j--; // 找出右边比中间值小的数
if (i <= j) { // 将左边大的数和右边小的数进行替换
tempDate = strDate[i];
strDate[i] = strDate[j];
strDate[j] = tempDate;
i++;
j--;
}
} while (i <= j); // 当两者交错时停止 if (i < right) {
quickSort(strDate, i, right);// 从
}
if (j > left) {
quickSort(strDate, left, j);
}
}
}
上一篇:java算法面试题:设计一个快速排序。双路快速排序,简单易于理解。


下一篇:Java算法面试题:编写一个程序,将e:\neck目录下的所有.java文件复制到e:\jpg目录下,并将原来文件的扩展名从.java改为.jpg