资讯专栏INFORMATION COLUMN

各种sort总结

Cristalven / 1444人阅读

摘要:各种总结如下小动画网站冒泡排序原理每次遍历一遍数组,遇到循环遍历直至顺序正确代码快速排序原理找到一个基准,每次都将比小的放到左边,比大的放到右边,然后对左边右边分别再进行快速排序,直到分的子数组只有一个数字为止。

各种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

相关文章

  • 各种排序算法总结

    摘要:排序算法是最基本最常用的算法,不同的排序算法在不同的场景或应用中会有不同的表现,我们需要对各种排序算法熟练才能将它们应用到实际当中,才能更好地发挥它们的优势。今天,来总结下各种排序算法。 排序算法是最基本最常用的算法,不同的排序算法在不同的场景或应用中会有不同的表现,我们需要对各种排序算法熟练才能将它们应用到实际当中,才能更好地发挥它们的优势。今天,来总结下各种排序算法。 下面这个表格...

    null1145 评论0 收藏0
  • Rxjs入门实践-各种排序算法排序过程的可视化展示

    摘要:整个数据流序列 Rxjs入门实践-各种排序算法排序过程的可视化展示 这几天学习下《算法》的排序章节,具体见对排序的总结,想着做点东西,能将各种排序算法的排序过程使用Rxjs通过可视化的方式展示出来,正好练系一下Rxjs的使用本文不会太多介绍Rxjs的基本概念,重点介绍如何用响应式编程的思想来实现功能 在线演示地址 源码 效果图 showImg(https://segmentfault...

    piglei 评论0 收藏0
  • Rxjs入门实践-各种排序算法排序过程的可视化展示

    摘要:整个数据流序列 Rxjs入门实践-各种排序算法排序过程的可视化展示 这几天学习下《算法》的排序章节,具体见对排序的总结,想着做点东西,能将各种排序算法的排序过程使用Rxjs通过可视化的方式展示出来,正好练系一下Rxjs的使用本文不会太多介绍Rxjs的基本概念,重点介绍如何用响应式编程的思想来实现功能 在线演示地址 源码 效果图 showImg(https://segmentfault...

    荆兆峰 评论0 收藏0
  • 思维导图整理大厂面试高频数组24: 合并两个有序数组的两种双指针思想, 力扣88

    摘要:此专栏文章是对力扣上算法题目各种方法的总结和归纳整理出最重要的思路和知识重点并以思维导图形式呈现当然也会加上我对导图的详解目的是为了更方便快捷的记忆和回忆算法重点不用每次都重复看题解毕竟算法不是做了一遍就能完全记住的所 ...

    darkerXi 评论0 收藏0
  • 细说JS数组

    摘要:数组元素的读写使用访问数组元素时,将索引转换为字符串,然后将其作为属性名一样使用。第一个参数应该在前只展开一层数组元素不变,返回注意,只拼接第一层结构。 此乃犀牛书(第七章 数组)读书笔记,又结合了ES6中数组的扩展部分做的知识梳理。精华部分就是手工绘制的两张数组总结图了。灵活运用数组的各种方法是基本功,是基本功,是基本功,重要的事情说三遍。好了,正文从下面开始~ 数组的基本概念 什么...

    starsfun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<