排序算法

来源:互联网 发布:百度云 知乎 编辑:程序博客网 时间:2024/06/11 13:20

一、冒泡排序

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个;
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数;
  3. 针对所有的元素重复以上的步骤,除了最后一个;
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
var arr = [1,11,2,32,15,23,67,3];function bubbleSort(){    var temp = -1;    for (var i = 1; i < arr.length; i++) {        for (var j = 0; j < arr.length-i; j++) {            if(arr[j+1]<arr[j]){                temp = arr[j+1];                arr[j+1] = arr[j];                arr[j] = temp;            }        }    }    for (var i = 0; i < arr.length; i++) {        console.log(arr[i])    }}

二、选择排序

选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换。

var arr = [1, 11, 2, 32, 15, 23, 67, 3];    function selectionSort() {    var minIndex = -1;    var temp = -1;    for (var i = 0; i < arr.length - 1; i++) {        minIndex = i;        for (var j = i + 1; j < arr.length; j++) {            if (arr[j] < arr[minIndex]) {                minIndex = j;            }        }        if (minIndex !== i) {            temp = arr[i];            arr[i] = arr[minIndex];            arr[minIndex] = temp;        }    }    for (var i = 0; i < arr.length; i++) {        console.log(arr[i])    }}   

三、快速排序

快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

function quickSort(arr, low, high) {    if (low > high) {        return;    }    var l = low;    var h = high;    var povit = arr[low];    while (l < h) {        while (h > l && arr[h] >= povit) {            h--;        }        if (l < h) {            arr[l] = arr[h];            l++;        }        while (l < h && arr[l] <= povit) {            l++;        }        if (l < h) {            arr[h] = arr[l];            h--;        }    }    arr[l] = povit;    quickSort(arr, low, l - 1);    quickSort(arr, h + 1, high);}
原创粉丝点击