排序
排序
爱敲代码的Harrison
种一棵树最好的时间是十年前,其次是现在。
展开
-
随机快排时间复杂度是N平方?
数组分区—partition给定一个数组arr,和一个整数num,请把小于等于num的数放在数组左边,大于num的数放在右边。分析:设计一个<=区,该区域一开始在数组左侧,只用一个变量记录它的右边界,所以一开始<=区在下标为-1的位置,然后开始遍历数组(0,1,2…N-1)遍历规则:i位置的数[i] <= num:把当前数和<=区的下一个数交换,然后<=区向右扩一个位置,当前数跳到下一个(i++)[i] > num:什么也不干,直接i++题目升级将数组分原创 2021-11-29 22:27:37 · 853 阅读 · 6 评论 -
数组小和,归并排序实现
在一个数组中,一个数左边比它小的数的总和,叫数的小和,所有数的小和累加起来,叫数组小和,求数组小和,可以利用归并排序package com.harrison.class03;public class Code02_SmallSum { public static int smallSum(int[] arr) { if (arr == null || arr.length < 2) { return 0; } return process(arr, 0, arr.length原创 2021-11-29 09:35:49 · 311 阅读 · 12 评论 -
归并排序,递归和非递归实现
package com.harrison.class03;public class Code01_MergeSort { public static void mergeSort1(int[] arr) { if (arr == null || arr.length < 2) { return; } process(arr, 0, arr.length - 1); } public static void process(int[] arr, int L, int R)原创 2021-11-28 22:33:30 · 433 阅读 · 4 评论 -
插入排序,对数器
package com.harrison.Class01;import java.util.Arrays;public class Code03_InsertSort { /** *想让arr[0~0]上有序,这个范围只有一个数,当然是有序的。 * *想让arr[0~1]上有序,所以从arr[1]开始往前看, *如果arr[1]<arr[0],就交换。否则什么也不做。 * *想让arr[0~i]上有序,所以从arr[i]开始往前看, *arr[i]这个数不停向左移原创 2021-11-21 21:35:38 · 391 阅读 · 0 评论 -
选择排序,对数器
package com.harrison.Class01;import java.util.Arrays;public class Code01_SelectionSort { /** *arr[0 ~ N-1]范围上,找到最小值所在的位置,然后把最小值交换到0位置。 *arr[1 ~ N-1]范围上, 找到最小值所在的位置,然后把最小值交换到1位置。 *arr[2 ~ N-1]范围.上,找到最小值所在的位置,然后把最小值交换到2位置。 *arr[N-1 ~N-1原创 2021-11-21 21:33:23 · 415 阅读 · 0 评论 -
冒泡排序,对数器
package com.harrison.Class01;import java.util.Arrays;public class Code02_BubbleSort { /** * 在arr[0 ~ N-1]范围上: * arr[0]和arr[1],谁大谁来到1位置; * arr[1]和arr[2],谁大谁来到2位置; * arr[N-2]和arr[N-1],谁大谁来到N-1位置 * * 在arr[0~N-2]范围上,重复上面的过程, * 但最后一步是arr[N-3原创 2021-11-21 21:35:01 · 252 阅读 · 0 评论