说明
- Sort类是一个提供测试排序算法的模板类和工具类
- 具体使用案例, 在排序专栏的其它文章中
public abstract class Sort {
public abstract void sortNums(int[] nums);
public void sortClazz(Clazz[] array) { }
public void timeTest(int times) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
int[] nums = new int[times];
for (int i = 0; i < times; i++) {
nums[i] = (int)(Math.random() * times + 1);
}
Date date1 = new Date();
String date1Str = simpleDateFormat.format(date1);
System.out.println("排序开始时间:" + date1Str);
sortNums(nums);
Date date2 = new Date();
System.out.println("结束时间: " + simpleDateFormat.format(date2));
}
public void correctTest(int[] nums) {
if (nums == null) {
nums = new int[]{7, 9, 1, 1, 6 ,3, 5, 9, 8, 0, 0, 6, 2, 4};
}
int[] toBeSorted = Arrays.copyOf(nums, nums.length);
System.out.print("原数组---: ");
System.out.println(Arrays.toString(nums));
Arrays.sort(nums);
System.out.print("原数组升序: ");
System.out.println(Arrays.toString(nums));
sortNums(toBeSorted);
System.out.print("\n排序后数组: ");
System.out.println(Arrays.toString(toBeSorted));
System.out.print("\n原数组降序: [");
for (int i = nums.length - 1; i >= 0; i--) {
System.out.print(nums[i] + ", ");
}
System.out.println();
}
public void testClazz() {
Clazz a1 = new Clazz("abc");
Clazz a2 = new Clazz("bcd");
Clazz a3 = new Clazz("def");
Clazz a4 = new Clazz("efg");
Clazz[] array = {a1, a3, a2, a4};
System.out.print("\n原数组 : ");
System.out.println(Arrays.toString(array));
sortClazz(array);
System.out.print("排序后数组: ");
System.out.println(Arrays.toString(array));
}
public static void swap(int[] nums, int index1, int index2) {
int temp = nums[index1];
nums[index1] = nums[index2];
nums[index2] = temp;
}
}
- LC 86. 分隔链表 我的实现代码
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode dummyHead = new ListNode();
dummyHead.next = head;
ListNode minRight = dummyHead;
ListNode curPre = dummyHead;
if (curPre == null) {
System.out.println(curPre.val);
return null;
}
while(curPre != null && curPre.next != null) {
ListNode cur = curPre.next;
if (cur.val < x && curPre == minRight) {
curPre = curPre.next;
minRight = minRight.next;
} else {
if (cur.val < x) {
ListNode temp = cur.next;
cur.next = minRight.next;
minRight.next = cur;
curPre.next = temp;
minRight = minRight.next;
} else {
curPre = curPre.next;
}
}
}
return dummyHead.next;
}
}