面试题常考&必考之--js数组排序冒泡排序和快速排序

冒泡排序:

原理:比较相邻的元素,将值大的元素交换到右边。(如果相等不进行交换)

实例:

要排列数组:[10,1,35,61,89,36,55]

 

 

 

第一趟排序:

 

      第1次排序:10和1比较,10>1,交换位置       [1,10,35,61,89,36,55]

 

      第2趟排序:10和35比较,10<35,不交换位置  [1,10,35,61,89,36,55]

 

      第3趟排序:35和61比较,35<61,不交换位置  [1,10,35,61,89,36,55]

 

      第4趟排序:61和89比较,61<89,不交换位置  [1,10,35,61,89,36,55]

 

        第5趟排序:89和36比较,89>36,交换位置   [1,10,35,61,36,89,55]

 

       第6趟排序:89和55比较,89>55,交换位置    [1,10,35,61,36,55,89]

 

      第一趟总共进行了6次比较,排序结果:[1,10,35,61,36,55,89]

第二趟..........

 

 

分析:数组中N(七)个数字要排序完成,总共进行N-1(六)趟排序,每i趟的排序次数为(N-i)次

 

所以写代码可以用for的双重循环语句,(外层控制循环多少趟,内层控制每一趟的循环次数)

 

 

代码:

 

 

 

快速排序:

原理:每轮从数组中取出一个数作为基准

          在排序过程中,小于或者等于基准的数放在基准的左边,大于基准的全部放在右边

          在对左边和右边的继续进行上面两部,直到间距为1

 


方法:

 

 

        以下方法来源CSDN,感觉通俗易懂,分享给大家:


        [6  1  2 7  9  3  4  5 10  8](选择每轮数组中的第一个数作为基数,所以起始为6)

 

 

 

 

 

 

 代码:

 

 

 

 

posted @ 2019-09-25 16:09  小白呀白菜  阅读(810)  评论(0编辑  收藏  举报