# js冒泡排序

  1 /*
2             值交换函数swap()
3 */
4         var array = [1,2];
5         function swap(arr,a,b)
6         {
7             var temp = arr[a];
8             arr[a] = arr[b];
9             arr[b] = temp;
10         }
11         swap(array,0,1);
12         document.write(array[0]+"<br>");
13         document.write(array[1]+"<br>");
14
15         //3个数的冒泡排序 每次拿第一个数和后面的数比较
16         function sort3(){
17             var  a = 3, b = 9, c = 8, temp;
18             document.write("交换前 a = "+a+" b = "+b+" c = "+c+"<br>");
19             if(a > b){
20                 temp = a;
21                 a = b;
22                 b = temp;
23             }
24             if(a > c){
25                 temp = a;
26                 a = c;
27                 c = temp;
28             }
29             if (b > c){
30                 temp = b;
31                 b = c;
32                 c = temp;
33             }
34             document.write("交换后 a = "+a+" b = "+b+" c = "+c);
35         }
36         sort3();
37
38         //冒泡排序每次循环会得出一个最大值沉到最后
39         var array = [1,5,7,9,11,8,3,10];
40
41         function bubbleSort1(arr){
42             var i = arr.length,j;
43             var temp;
44             while(i > 0){
45                 for(j = 0; j < i - 1; j++){
46                     if(arr[j] > arr[j+1]){
47                         temp = arr[j];
48                         arr[j] = arr[j+1];
49                         arr[j+1] = temp;
50                     }
51                 }
52                 i--;
53             }
54             return arr;
55         }
56
57         document.write("<br> array = [1,5,7,9,11,8,3,10] 排序后"+bubbleSort1(array)+"<br>");
58
59         //翻转数组
60         function reverseArray(oldArray){
61             var newArray = [];
62             for(var i = oldArray.length - 1; i >= 0; i--){
63                 newArray[newArray.length] = oldArray[i];
64             }
65             return newArray;
66         }
67         var oldArray = [2, 5, 9, 1, 4, 0];
68         document.write("oldArray = [2, 5, 9, 1, 4, 0]<br> newArray = "+reverseArray(oldArray ));
69
70
71         //已经排好序的数组若想实现倒序反转可以强制两两交换
72         array1 = [1,5,6,9,11,8,3,10]
73         function bubbleSort2(arr){
74             document.write("<br>");
75             document.write("未排序的数组 "+arr);
76             var i = arr.length,j;
77             var temp;
78             while(i > 0){
79                 for(j = 0; j < i - 1; j++){
80                     if(arr[j]>arr[j+1]){
81                         swap(arr,j,j+1);
82                     }
83                 }
84                 i--;
85             }
86             document.write("<br>");
87             document.write("翻转前的数组 "+arr);
88             for(var i = 0; i <= arr.length - 1; i++){
89                 for(var j = 0; j < arr.length - 1- i; j++){
90                     swap(arr,j,j+1);//相邻数据互换位置
91                 }
92             }
93             document.write("<br>");
94             document.write("反转后的数组 "+arr);
95             document.write("<br>");
96             return arr;
97         }
98         document.write("array1 = [1,5,6,9,11,8,3,10] 排序后"+bubbleSort2(array1)+"<br>");
99
100
101         arr = [3, 4, 7, 9, 2, 80, 20, 8];
102         function bubbleSort3(arr){
103             var q1 = 0;
104             var q2 = 0;
105             for(var i = 0; i < arr.length ; i++){
106                 for(var j = 0; j < arr.length; j++){
107                     var temp;
108                     if(arr[j] > arr[j+1]){
109                         temp = arr[j];
110                         arr[j] = arr[j+1];
111                         arr[j+1] = temp;
112                     }
113                     q1++;
114                 }
115                 q2++;
116             }
117             document.write("内层循环次数："+q1+"<br>");
118             document.write("外层循环次数："+q2+"<br>");
119             return arr;
120         }
121         document.write("arr = [3, 4, 7, 9, 2, 80, 20, 8] ="+bubbleSort3(arr));
122
123
124         arr4 = [3, 4, 7, 9, 2, 80, 20, 8];
125         function bubbleSort4(arr){
126             var q1 = 0;
127             var q2 = 0;
128             for(var i = 0; i < arr.length ; i++){
129                 for(var j = 0; j < arr.length - i; j++){
130                     var temp;
131                     if(arr[j] > arr[j+1]){
132                         temp = arr[j];
133                         arr[j] = arr[j+1];
134                         arr[j+1] = temp;
135                     }
136                     q1++;
137                 }
138                 q2++;
139             }
140             document.write("<br>内层循环次数："+q1+"<br>");
141             document.write("外层循环次数："+q2+"<br>");
142             return arr;
143         }
144         document.write("arr4 = [3, 4, 7, 9, 2, 80, 20, 8] ="+bubbleSort4(arr4));
145
146
147
148         arr5 = [3, 4, 7, 9, 2, 80, 20, 8];
149         function bubbleSort5(arr){
150             var q1 = 0;
151             var q2 = 0;
152             for(var i = 0; i < arr.length ; i++){
153                 for(var j = 0; j < arr.length - i -1; j++){
154                     var temp;
155                     if(arr[j] > arr[j+1]){
156                         temp = arr[j];
157                         arr[j] = arr[j+1];
158                         arr[j+1] = temp;
159                     }
160                     q1++;
161                 }
162                 q2++;
163             }
164             document.write("<br>内层循环次数："+q1+"<br>");
165             document.write("外层循环次数："+q2+"<br>");
166             return arr;
167         }
168         document.write("arr5 = [3, 4, 7, 9, 2, 80, 20, 8] ="+bubbleSort5(arr5));
169
170         arr6 = [3, 4, 7, 9, 2, 80, 20, 8];
171         function bubbleSort6(arr){
172             var q1 = 0;
173             var q2 = 0;
174             for(var i = 0; i < arr.length ; i++){
175                 var isSort = true;
176                 for(var j = 0; j < arr.length - i - 1; j++){
177                     var temp;
178                     if(arr[j] > arr[j+1]){
179                         isSort = false;
180                         temp = arr[j];
181                         arr[j] = arr[j+1];
182                         arr[j+1] = temp;
183                     }
184                     q1++;
185                 }
186                 q2++;
187                 if(isSort == true){
188                     break;
189                 }
190             }
191             document.write("<br>内层循环次数："+q1+"<br>");
192             document.write("外层循环次数："+q2+"<br>");
193             return arr;
194         }
195         document.write("arr6 = [3, 4, 7, 9, 2, 80, 20, 8] ="+bubbleSort6(arr6));
196
197
198         //求一组数组中的数的最大值最小值及他们的索引
199         var array = [1, 2, 3, 14, 5, 6, 17, 8, 9, 10];
200         var max = array[0];
201         var maxIndex = 0;
202         var min = array[0];
203         var minIndex = 0;
204         for (var i =0; i < array.length; i++){
205             if(max < array[i]){
206                 max = array[i];
207                 maxIndex = i;
208             }
209             if(min > array[i]){
210                 min = array[i];
211                 minIndex = i;
212             }
213         }
214
215         console.log("数组中的最大值是 "+max+" 最大值的索引是 "+maxIndex);
216         console.log("数组中的最小值是 "+min+" 最小值的索引是 "+minIndex);

posted @ 2017-04-09 14:49  惠远建  阅读(...)  评论(...编辑  收藏