数组的冒泡排序和选择排序

    xiaoxiao2022-07-07  231

    1.冒泡排序

    冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。

    即首先比较第1个和第2个数,将小数放前,大数放后。

    然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。

    重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。

    var a = [10, 2, 1, 4, 3, 5, 7, 6, 9, 8]; for (var i = 0; i < a.length; i++) { var temp = null; for (var k = 0; k < a.length - 1; k++) { if (a[k] < a[k + 1]) { temp = a[k + 1]; a[k + 1] = a[k]; a[k] = temp; } } } var a2 = [10, 2, 1, 4, 3, 5, 7, 6, 9, 8]; var a1 = a2.sort(function (n1, n2) { return n2 - n1; }); console.log(a1);

    2.选择排序

    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

      console.time(); function selectsort(a) { var minindex = 0; var temp = null; for (var i = 0; i < a.length; i++) { minindex = i;//默认一个最小的索引 拿最小索引的值 去和后边的值对比 如果你小 minindex=最小值的索引 for (var k = i + 1; k < a.length; k++) { if (a[k] < a[minindex]) { minindex = k; } } temp = a[i]; a[i] = a[minindex]; a[minindex] = temp; } console.log(a); } selectsort(arr); console.timeEnd(); 快速排序 var res = [1, 18, 16, 0, 4, 2, 7, 5]; function qucksort(r) { if (r.length < 2) { return r; } var centerindex = parseInt(r.length / 2);//值可能有小数点 var num = r.splice(centerindex, 1)[0]; var left = []; var right = []; for (var i = 0; i < r.length; i++) { if (r[i] < num) { //左边加 left.push(r[i]); } else { //右边加 right.push(r[i]); } } return qucksort(left).concat(num).concat(qucksort(right)); } console.log(qucksort(res));

     

     

     

    最新回复(0)