摘要:各种总结如下小动画网站冒泡排序原理每次遍历一遍数组,遇到循环遍历直至顺序正确代码快速排序原理找到一个基准,每次都将比小的放到左边,比大的放到右边,然后对左边右边分别再进行快速排序,直到分的子数组只有一个数字为止。
各种SORT总结如下:
小动画网站:http://jsdo.it/norahiko/oxIy/...
冒泡排序
原理:每次遍历一遍数组,遇到num[i + 1] < num[i],swap; 循环遍历直至顺序正确
代码:
public void bubbleSort(int[] nums){
while(!sorted(nums)){ //do nothing } } boolean sorted(int[] nums){ boolean sorted = true; int j = 1; for(int i= 0; i < nums.length - 1; i++){ if(nums[j] < nums[i]){ //swap int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; sorted = false; } j++; } return sorted; }
快速排序
原理:找到一个基准(pivot),divide and conquer, 每次都将比pivot小的放到左边,比pivot大的放到右边,然后对左边右边分别再进行快速排序,直到分的子数组只有一个数字为止。
(前一版代码写得太乱了不便理解,这里写一个更广为接受的)理解为“左边右边同时开始,遇到不符合顺序的两个就进行交换”
int partition(int arr[], int left, int right)
{
int i = left, j = right; int tmp; int pivot = arr[(left + right) / 2]; while (i <= j) { while (arr[i] < pivot && i <= j) i++; while (arr[j] > pivot && i <= j) j--; if (i <= j) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; i++; j--; } }; return i;
}
void quickSort(int arr[], int left, int right) {
int index = partition(arr, left, right); if (left < index - 1) quickSort(arr, left, index - 1); if (index < right) quickSort(arr, index, right);
}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67065.html
摘要:整个数据流序列 Rxjs入门实践-各种排序算法排序过程的可视化展示 这几天学习下《算法》的排序章节,具体见对排序的总结,想着做点东西,能将各种排序算法的排序过程使用Rxjs通过可视化的方式展示出来,正好练系一下Rxjs的使用本文不会太多介绍Rxjs的基本概念,重点介绍如何用响应式编程的思想来实现功能 在线演示地址 源码 效果图 showImg(https://segmentfault...
摘要:整个数据流序列 Rxjs入门实践-各种排序算法排序过程的可视化展示 这几天学习下《算法》的排序章节,具体见对排序的总结,想着做点东西,能将各种排序算法的排序过程使用Rxjs通过可视化的方式展示出来,正好练系一下Rxjs的使用本文不会太多介绍Rxjs的基本概念,重点介绍如何用响应式编程的思想来实现功能 在线演示地址 源码 效果图 showImg(https://segmentfault...
摘要:此专栏文章是对力扣上算法题目各种方法的总结和归纳整理出最重要的思路和知识重点并以思维导图形式呈现当然也会加上我对导图的详解目的是为了更方便快捷的记忆和回忆算法重点不用每次都重复看题解毕竟算法不是做了一遍就能完全记住的所 ...
阅读 899·2021-11-25 09:43
阅读 1266·2021-11-17 09:33
阅读 2980·2019-08-30 15:44
阅读 3282·2019-08-29 17:16
阅读 455·2019-08-28 18:20
阅读 1597·2019-08-26 13:54
阅读 533·2019-08-26 12:14
阅读 2152·2019-08-26 12:14