转载自:
https://www.cnblogs.com/onepixel/articles/7674659.html
以下摘要:
0.2 算法复杂度

0.3 相关概念
- 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。
- 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。
- 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。
- 空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。
(冒泡法)

function bubbleSort(arr) {
varlen = arr.length; for(vari = 0; i < len - 1; i++) { for(varj = 0; j < len - 1 - i; j++) { if(arr[j] > arr[j+1]) { // 相邻元素两两对比 vartemp = arr[j+1]; // 元素交换 arr[j+1] = arr[j]; arr[j] = temp; } } } returnarr;}(选择排序)

function selectionSort(arr) {
varlen = arr.length; varminIndex, temp; for(vari = 0; i < len - 1; i++) { minIndex = i; for(varj = i + 1; j < len; j++) { if(arr[j] < arr[minIndex]) { // 寻找最小的数 minIndex = j; // 将最小数的索引保存 } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } returnarr;} (插入排序)

function insertionSort(arr) {
varlen = arr.length; varpreIndex, current; for(vari = 1; i < len; i++) { preIndex = i - 1; current = arr[i]; while(preIndex >= 0 && arr[preIndex] > current) { arr[preIndex + 1] = arr[preIndex]; preIndex--; } arr[preIndex + 1] = current; } returnarr;}(快速排序)

function quickSort(arr, left, right) {
varlen = arr.length, partitionIndex, left =typeofleft !='number'? 0 : left, right =typeofright !='number'? len - 1 : right; if(left < right) { partitionIndex = partition(arr, left, right); quickSort(arr, left, partitionIndex-1); quickSort(arr, partitionIndex+1, right); } returnarr;}function partition(arr, left ,right) { // 分区操作 varpivot = left, // 设定基准值(pivot) index = pivot + 1; for(vari = index; i <= right; i++) { if(arr[i] < arr[pivot]) { swap(arr, i, index); index++; } } swap(arr, pivot, index - 1); returnindex-1;}function swap(arr, i, j) { vartemp = arr[i]; arr[i] = arr[j]; arr[j] = temp;}
浙公网安备 33010602011771号