1 //1. 冒泡排序
2 var bubbleSort = function(arr) {
3 for (var i = 0; i < arr.length; i++) {
4 var flag = true;
5 for (var j = 0; j < arr.length - i - 1; j++) {
6 if (arr[j] > arr[j + 1]) {
7 flag = false;
8 arraySwap(arr, j, j + 1);
9 }
10 }
11 if (flag) {
12 break;
13 }
14 }
15 return arr;
16 };
17
18 //2. 选择排序
19 var selectionSort = function(arr) {
20 for (var i = 1; i < arr.length - 1; i++) {
21 var min = arr[i],
22 minIndex = i;
23 for (var j = i + 1; j < arr.length; j++) {
24 if (arr[j] < min) {
25 min = arr[j];
26 minIndex = j;
27 }
28 }
29 arraySwap(arr, i, minIndex);
30 }
31 return arr;
32 };
33
34 //3. 插入排序
35 var insertionSort = function(arr) {
36 for (var i = 1; i < arr.length; i++) {
37 var temp = arr[i],
38 j = i - 1;
39 while (temp < arr[j] && j > -1) {
40 arr[j + 1] = arr[j];
41 j--;
42 }
43 arr[j + 1] = temp;
44 }
45 return arr;
46 };
47
48 //4. 快速排序
49 var quickSort = function(arr, start, end) {
50 if (start >= end) {
51 return arr;
52 }
53 var index = partition(arr, start, end);
54 quickSort(arr, start, index - 1);
55 quickSort(arr, index + 1, end);
56 return arr;
57 };
58
59 var partition = function(arr, start, end) {
60 var temp = arr[start];
61
62 while (start < end) {
63 while (start < end && arr[end] >= temp) {
64 end--;
65 }
66 arr[start] = arr[end];
67
68 while (start < end && arr[start] <= temp) {
69 start++;
70 }
71 arr[end] = arr[start];
72 }
73
74 arr[start] = temp;
75 return start;
76 };