冒泡排序和快速排序

154 阅读2分钟

冒泡排序: 通过一轮一轮的比较,将前后的数进行比较,将最大的数找出来,然后赋给每轮的最后一个数。

基本思想:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序,则交换,使值较大的元素逐渐从前移向后部,就像水底的气泡一下逐渐向上冒。

什么时候排的最快: 当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊。。。。)

什么时候排的最慢: 当输入的数据是反序时(写一个for循环反序输出数据不就行了,干嘛要用你冒泡排序呢,我是闲的吗。。。) 代码如下: let arr=[5,4,3,2,1] for(let i=0;i<arr.length;i++){ for(let j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ let box = arr[j+1]; arr[j+1]=arr[j]; arr[j]=box } } } console.log(arr)

快速排序: 就是通过找出最小数索引,将它和第一个值进行交换,然后一轮一轮的比较就行了 基本思想:

拿出用数组第一项与数组的第二次开始一次比较,将最小的那一项的索引值[min]保存,然后再将数组的第一项索引为[0]与这个最小值兑换位置。(第一次循环找出数组中最小的放在第一位) 让后再拿出数组第二项,与数组的第三项开始找出数组中第二小的值的索引[min],然后与数组中第二项索引为[1]的互换位置。

代码如下:

let arr =[5,4,3,2,1] for(let i=0;i<arr.length;i++){ let index=i; for(let j=1+i;j<arr.length;j++){ if(arr[index]>arr[j]){ index=j; } let box = arr[i]; arr[i]=arr[index] arr[index]=box } } console.log(arr)