概述
冒泡排序算法的思想:很简单,每次遍历完序列都把最大(小)的元素放在最前面,然后再对剩下的序列从父前面的一个过程,每次遍历完之后待排序序列就少一个元素,当待排序序列减小为只有一个元素的时候排序就结束了.因此,复杂度在最坏的情况下是O(N ^ 2).
- void Swap( int * a, int * b)
- {
- int temp;
- temp = * a;
- * a = * b;
- * b = temp;
- }
- // 冒泡排序
- void BubbleSort( int array[], int length)
- {
- // 记录一次遍历中是否有元素的交换
- bool exchange;
- for ( int i = 0 ; i < length; ++ i)
- {
- exchange = false ;
- for ( int j = i + 1 ; j < length; ++ j)
- {
- if (array[j] < array[i])
- {
- exchange = true ;
- Swap( & array[j], & array[i]);
- }
- }
- // 如果这次遍历没有元素的交换,那么排序结束
- if ( false == exchange)
- break ;
- }
- }
从后往前版本
- #include <stdio.h>;
- void bubble_sort(int arr[],int count);
- void bubble_sort(int arr[],int count)
- {
- int i;int j;int temp;
- for(i=0;i<count;i++)
- {
- for(j=count-1;j>i;j--)
- {
- if(arr[j]<arr[j-1])
- {
- temp=arr[j];
- arr[j]=arr[j-1];
- arr[j-1]=temp;
- }
- }
- }
- }
- int main(void)
- {
- int arr[]={1,5,2,4,3,8,6,7,9};
- int count=sizeof(arr)/sizeof(int);
- bubble_sort(arr,count);
- int k;
- for(k=0;k<count;k++)
- {
- printf("%d",arr[k]);
- }
- return 0;
- }
PHP版本
- <?php
- $arr=array(1,5,2,4,3,8,6,7,9);
- print "排序前 ";
- print_r($arr);
- echo "<br>";
- $arr=bubble_sort($arr);
- print "排序后 ";
- print_r($arr);
- function bubble_sort($array)
- {
- $count = count($array);
- $bool=true;$k=0;
- for($i=0;$i<$count;$i++)
- {
- for($j=$count-1;$j>$i;$j--)
- {
- if($array[$j]<$array[$j-1])
- {
- $temp=$array[$j];
- $array[$j]=$array[$j-1];
- $array[$j-1]=$temp;
- $bool=false;
- $k++;
- }
- }
- if($bool==true)
- {
- break;
- }
- }
- echo "一共用了".$k."次<br>";
- return $array;
- }
- ?>
最后
以上就是香蕉胡萝卜为你收集整理的冒泡排序的多种方法的全部内容,希望文章能够帮你解决冒泡排序的多种方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复