常见算法
Sandul
只做记录,不做解释
展开
-
快速排序法
//快排 public void quickSort(int[] arr,int start,int end){ if (start>=end||arr.length<=1){ return ; } int low = start; int high = end; int mid = arr[low]; while (low<high){ while (arr[high]>=mid && low < high){原创 2021-09-24 17:53:08 · 72 阅读 · 0 评论 -
希尔排序算法
@Test public void test013() throws Exception { //希尔排序,在插入排序算法的基础上做分组排序(先按一定步长排序) int k = 0; int[] arr = {4, 3, 5, 3, 6, 2, 8, 1, 9,3,5,1,2,3,6,8,0,8,7,6,5,4}; int grap = arr.length / 2; while (grap > 0) { for (int j = grap; j < arr.leng原创 2021-09-24 16:26:12 · 87 阅读 · 0 评论 -
插入排序法
@Test public void test012() throws Exception{ //插入排序,从第二位元素i开始,和前一位元素i-1比较,小的靠左(放i-1), // 内层循环往左移,直到arr[i]>arr[i-1]或者i=1进入下一次大循环 //大循环以数组最后一个元素结束 int[] arr = {4,3,5,3,6,2,8,1,9}; for (int j = 1; j < arr.length; j++) { for (int i = j; i原创 2021-09-24 15:27:51 · 85 阅读 · 0 评论 -
二分查找
二分查找法使用二分查找法的前提是:数组有自然顺序拿要查找的元素和中位数比较,如果大于中位数,则最小下标右移,否则最大下标左移直到找到为止,如果min>max还没找到,证明元素不存在数组中;public Integer binarySearch(int[] arr, Integer num) { if (num>arr[arr.length-1]||num<arr[0]){ //如果不在数组最大与最小范围,直接略过查找 return -1; } int min原创 2021-04-19 15:41:43 · 63 阅读 · 0 评论 -
选择排序
选择排序:依次拿出元素和后面的所有元素作比较,小的放前面,大的放后面int[] arr = {1, 4, 2, 8, 5, 9, 3, 7}; int count = 0; for (int i = 0; i < arr.length - 1; i++) { for (int j = i+1; j < arr.length; j++) { if (arr[i]>arr[j]){ int temp = arr[i]; arr[i]=arr[j];原创 2021-04-19 14:44:38 · 48 阅读 · 0 评论 -
冒泡排序
冒泡排序:依次比较相邻两个元素,大的往后排,首先找到最大的,放最后面第二大的放倒数第二,以此类推,大循环控制比较次数小循环负责比较并且后移int[] arr = {1, 4, 2, 8, 5, 9, 3, 7}; int count = 0; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j]>arr[j+1]原创 2021-04-19 14:14:43 · 57 阅读 · 0 评论