1.常州微信小程序开发算法排序
a.插入排序
var arr = [23,34,3,4,23,44,333,444];
var arrShow = (function insertionSort(array){
if(Object.prototype.toString.call(array).slice(8,-1) ==='Array'){
for (var i = 1; i < array.length; i++) {
var key = array[i];
var j = i - 1;
while (j >= 0 && array[j] > key) {
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
return array;
}else{
return 'array is not an Array!';
}
})(arr);
console.log(arrShow);//[3, 4, 23, 23, 34, 44, 333, 444]
b.二分插入排序
function binaryInsertionSort(array) {if (Object.prototype.toString.call(array).slice(8, -1) === 'Array') {for (var i = 1; i < array.length; i++) {var key = array[i], left = 0, right = i - 1;while (left <= right) {var middle = parseInt((left + right) / 2);if (key < array[middle]) { right = middle - 1; } else { left = middle + 1; } }for (var j = i - 1; j >= left; j--) { array[j + 1] = array[j]; } array[left] = key; }return array; } else {return 'array is not an Array!'; } }
c.抉择排序
function selectionSort(array) {if (Object.prototype.toString.call(array).slice(8, -1) === 'Array') {var len = array.length, temp;for (var i = 0; i < len - 1; i++) {var min = array[i];for (var j = i + 1; j < len; j++) {if (array[j] < min) { temp = min; min = array[j]; array[j] = temp; } } array[i] = min; }return array; } else {return 'array is not an Array!'; } }
d、冒泡排序
function bubbleSort(array) {if (Object.prototype.toString.call(array).slice(8, -1) === 'Array') {var len = array.length, temp;for (var i = 0; i < len - 1; i++) {for (var j = len - 1; j >= i; j--) {if (array[j] < array[j - 1]) { temp = array[j]; array[j] = array[j - 1]; array[j - 1] = temp; } } }return array; } else {return 'array is not an Array!'; } }
e、疾速排序
//常州微信公众平台开发要领一function quickSort(array, left, right) {if (Object.prototype.toString.call(array).slice(8, -1) === 'Array' && typeof left === 'number' && typeof right === 'number') {if (left < right) {var x = array[right], i = left - 1, temp;for (var j = left; j <= right; j++) {if (array[j] <= x) { i++; temp = array[i]; array[i] = array[j]; array[j] = temp; } } quickSort(array, left, i - 1); quickSort(array, i + 1, right); }; } else {return 'array is not an Array or left or right is not a number!'; } }var aaa = [3, 5, 2, 9, 1]; quickSort(aaa, 0, aaa.length - 1); console.log(aaa);//要领二var quickSort = function(arr) { if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i < arr.length; i++){ if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat([pivot], quickSort(right)); };
f、堆排序
/*常州网站开发要领申明:堆排序 @param array 待排序数组*/function heapSort(array) {if (Object.prototype.toString.call(array).slice(8, -1) === 'Array') {//建堆var heapSize = array.length, temp;for (var i = Math.floor(heapSize / 2); i >= 0; i--) { heapify(array, i, heapSize); }//堆排序for (var j = heapSize - 1; j >= 1; j--) { temp = array[0]; array[0] = array[j]; array[j] = temp; heapify(array, 0, --heapSize); } } else {return 'array is not an Array!'; } }/*要领申明:维护堆的性质 @param arr 数组 @param x 数组下标 @param len 堆大小*/function heapify(arr, x, len) {if (Object.prototype.toString.call(arr).slice(8, -1) === 'Array' && typeof x === 'number') {var l = 2 * x, r = 2 * x + 1, largest = x, temp;if (l < len && arr[l] > arr[largest]) { largest = l; }if (r < len && arr[r] > arr[largest]) { largest = r; }if (largest != x) { temp = arr[x]; arr[x] = arr[largest]; arr[largest] = temp; heapify(arr, largest, len); } } else {return 'arr is not an Array or x is not a number!'; } }
h、归并排序
function mergeSort(array, p, r) {if (p < r) {var q = Math.floor((p + r) / 2); mergeSort(array, p, q); mergeSort(array, q + 1, r); merge(array, p, q, r); } } function merge(array, p, q, r) {var n1 = q - p + 1, n2 = r - q, left = [], right = [], m = n = 0;for (var i = 0; i < n1; i++) { left[i] = array[p + i]; }for (var j = 0; j < n2; j++) { right[j] = array[q + 1 + j]; } left[n1] = right[n2] = Number.MAX_VALUE;for (var k = p; k <= r; k++) {if (left[m] <= right[n]) { array[k] = left[m]; m++; } else { array[k] = right[n]; n++; } } }
g、桶排序
/*要领申明:桶排序 @param array 数组 @param num 桶的数目*/function bucketSort(array, num) {if (array.length <= 1) {return array; }var len = array.length, buckets = [], result = [], min = max = array[0], regex = '/^[1-9]+[0-9]*$/', space, n = 0; num = num || ((num > 1 && regex.test(num)) ? num : 10);for (var i = 1; i < len; i++) { min = min <= array[i] ? min : array[i]; max = max >= array[i] ? max : array[i]; } space = (max - min + 1) / num;for (var j = 0; j < len; j++) {var index = Math.floor((array[j] - min) / space);if (buckets[index]) { // 非空桶,插入排序var k = buckets[index].length - 1;while (k >= 0 && buckets[index][k] > array[j]) { buckets[index][k + 1] = buckets[index][k]; k--; } buckets[index][k + 1] = array[j]; } else { //空桶,初始化buckets[index] = []; buckets[index].push(array[j]); } }while (n < num) { result = result.concat(buckets[n]); n++; }return result; }
i、计数排序
function countingSort(array) {var len = array.length, B = [], C = [], min = max = array[0];for (var i = 0; i < len; i++) { min = min <= array[i] ? min : array[i]; max = max >= array[i] ? max : array[i]; C[array[i]] = C[array[i]] ? C[array[i]] + 1 : 1; }for (var j = min; j < max; j++) { C[j + 1] = (C[j + 1] || 0) + (C[j] || 0); }for (var k = len - 1; k >=0; k--) { B[C[array[k]] - 1] = array[k]; C[array[k]]--; }return B; }
j、常州手机App开发js自带的函数sort
arr.sort(function(a,b){
return a-b;
})
<script> var arr = [23,34,3,4,23,44,333,444]; arr.sort(function(a,b){ return a-b; }) console.log(arr);</script>