在工作中遇到了排序问题,随后就总了了几种排序方式【冒泡排序、快速排序、选择排序】
【冒泡排序】
原理:比较相邻的两个元素,将值大的交换至右侧
// 冒泡排序:比较相邻的两个元素,将值大的交换至右边 var arr = [1,20,5,62,8,2,45]; function bubbleSort(obj){ for(var i = 0; i < obj.length; i++){ for(var j = 0; j < obj.length -i -1; j++){ if(obj[j] > obj[j+1] ){ var temp = obj[j]; obj[j] = obj[j+1]; obj[j+1] = temp; } } } return obj; } document.write("冒泡排序" + bubbleSort(arr) + "<br>");
【快速排序】
原理:1、选择数组的一个中间值,分成左右两个数组,
2、用中间值与数组的值进行比较,比中间值小的放到左数组,比中间值大的放到右数组
3、最后将左数组、中间值与右数组连接起来
//快速排序:选择中间值,分左右两个数组,左数组的都比右数组的小 var arr = [1,20,5,62,8,2,45]; function quickSort(arr){ if(arr.length <= 1){ return arr; } var middleIndex = Math.floor(arr.length / 2); var middleVal = arr.splice(middleIndex, 1)[0]; var left = [], right = []; for(var i = 0; i < arr.length; i++){ if(arr[i] < middleVal){ left.push(arr[i]); }else{ right.push(arr[i]); } } return quickSort(left).concat([middleVal], quickSort(right)) } document.write("快速排序:" + quickSort(arr) + "<br>");
【选择排序】
原理:把未选择中的最小值存放在起始位置,然后在未排序中找到最小的值,放在已排序的最后
//选择排序:把未选择中的最小值存放在起始位置,然后在未排序中找到最小的值,放在已排序的最后 var selectSortArr = [1,20,5,62,8,2,45]; function selectSort(arr){ if(arr.length <= 1){ return arr; } var minIndex, temp; console.log(arr) for(var i = 0; i< arr.length; i++){ minIndex = i; for(var j = i + 1; j < arr.length; j++){ if(arr[j] < arr[minIndex]){ minIndex = j; } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; console.log(arr) } return arr; } document.write("选择排序:" + selectSort(selectSortArr));
-THE END-