Last active
March 15, 2018 08:38
-
-
Save liuwenzhuang/2550e794974f3e2beff64b017f3ac800 to your computer and use it in GitHub Desktop.
冒泡排序
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * 冒泡排序,此方法每次固定头部最小值,即前方为有序区,时间复杂度O(n^2),空间复杂度O(1) | |
| * @param {Array} arr 需要排序的数据源 | |
| * @return {Array} arr 排序后数组 | |
| */ | |
| function bubbleSort(arr) { | |
| var len = arr.length; | |
| for(var i=0; i<len-1; i++) { | |
| for(var j=i+1; j<len; j++) { | |
| if(arr[i] > arr[j]) { | |
| var temp = arr[i]; | |
| arr[i] = arr[j]; | |
| arr[j] = temp; | |
| } | |
| } | |
| } | |
| return arr; | |
| } | |
| function bubbleSort2(arr) { | |
| var len = arr.length; | |
| var isSorted = false; // 如果一次循环中未进行数据交换则已经有序 | |
| var cursor = 0; // 游标,每次循环后方有序区则不需要进行比较 | |
| while(!isSorted) { | |
| isSorted = true; | |
| for(var i=0; i<len-1-cursor; i++) { | |
| if(arr[i+1] < arr[i]) { | |
| isSorted = false; // 需要交换,还是非有序的 | |
| var temp = arr[i+1]; | |
| arr[i+1] = arr[i]; | |
| arr[i] = temp; | |
| } | |
| } | |
| cursor += 1; | |
| } | |
| return arr; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment