背景
排序是算法的入门知识,也是面试中经常会问到的问题。本文从JDK工具类 Collections的sort方法入手,动手编写代码,解析面试中经常会问到的排序算法。
准备
- 生成一个从1-1000的整数集合,并随机打乱顺序;
- 将乱序的集合保存到文件中,便于各种排序算法调用;
- 定义一个读取文件中的乱序集合的静态方法;
- 定义一个遍历打印集合的静态方法。
/**
* 待排序数据源
*
* @author zhuhuix
* @date 2020-05-28
*/
public class OriginalData {
//将1000个随机打乱的整数到文件中,便于统一使用
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectOutputStream stream = new ObjectOutputStream(
new FileOutputStream("c:\\data.dat"));
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 1000; i++) {
list.add(i);
}
// 随机打乱list
Collections.shuffle(list);
// 写入文件并保存
stream.writeObject(list);
// 遍历并打印乱序集合
printList(getData());
}
// 读出文件中的随机打乱的待排序数据
public static List<Integer> getData() throws IOException, ClassNotFoundException {
ObjectInputStream stream = new ObjectInputStream(
new FileInputStream("c:\\data.dat"));
if (stream != null) {
return (List<Integer>) stream.readObject();
} else {
return null;
}
}
// 遍历打印输出集合
public static void printList(List<Integer> list) {
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + ",");
}
System.out.println();
}
}
输出如下:
Collections的sort方法
利用集合工具类Collections的sort方法对集合进行排序:
/**
1. Collections.sort排序
2. 3. @author zhuhuix
3. @date 2020-05-28
*/
public class ArraySort {
public static void main(String[] args) throws IOException, Class