冒泡排序算法的运作如下:(从后往前)
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
JavaScript实现
1 var arr = prompt("请输入一个数组(以“,”隔开):").split(",").map(function(data){ 2 return +data;}); 3 console.log("输入的数组是:"+arr); 4 5 function fun(arr){ 6 var i,j,temp; 7 for(i = 0; i < arr.length; i++){ 8 for(j = 0; j < arr.length-1-i; j++){ //注意:j < arr.length-1-i;这里是减i。 9 if(arr[j] > arr[j+1]){10 temp = arr[j];11 arr[j] = arr [j+1];12 arr[j+1] = temp;13 }14 }15 }16 return arr;17 }18 19 console.log("排序后的数组是: "+fun(arr));
优化:
1 var arr = prompt("请输入一个数组(以“,”隔开):").split(",").map(function(data){ 2 return +data;}); 3 console.log("输入的数组是:"+arr); 4 5 function fun(arr){ 6 var i,j,temp,flag=0;//这里 7 for(i = 0; i < arr.length; i++){ 8 for(j = 0; j < arr.length-1-i; j++){ //注意:j < arr.length-1-i;这里是减i。 9 if(arr[j] > arr[j+1]){10 flag=1;//这里11 temp = arr[j];12 arr[j] = arr [j+1];13 arr[j+1] = temp;14 }15 }16 if(flag==0)break;//这里17 }18 return arr;19 }20 21 console.log("排序后的数组是: "+fun(arr));
C语言
1 #include2 void fun(int *arr,int size) 3 { 4 int i, j, temp; 5 for(i=0; i arr[j+1])10 {11 temp = arr[j];12 arr[j] = arr[j+1];13 arr[j+1] = temp;14 }15 }16 }17 }18 19 int main()20 {21 int arr[] = { 4,3,5,6,1,2,10,9,8}, i, size;22 size = sizeof(arr)/sizeof(arr[0]);23 fun(arr,size);24 for(i=0; i