您的位置:首页 > 其它

【算法】冒泡排序

2016-08-30 23:55 134 查看

画外音:

在深入学习更多排序算法后和在实际使用情况中,冒泡排序的使用还是极少的。它适合数据规模很小的时候,而且它的效率也比较低,但是作为入门的排序算法,还是值得学习的 。

冒泡排序,相邻的两个元素进行比较,如果符合条件,就换位。

         第一圈,最值出现在了最后一位。如果要升序,则,最大值在最后一位,如果是降序,则最小值在最后一位。

         然后,第二圈,同样比较,次数少1,因为最后一位已经排出来。

         第三圈,依次类推,次数再少1,最后两位不用参与排序。

冒泡排序最坏情况的时间复杂度是O(n²)

代码(升序举例)
<span style="font-size:12px;color:#000000;background-color: rgb(255, 255, 255);">public static void main(String[] args) {

int[] arr = {5,1,6,4,2,8,9,3};
//排序前
System.out.print("排序前:");
printArray(arr);
//排序
bubbleSort(arr);

//排序后
System.out.print("排序后:");
printArray(arr);
}

//冒泡排序
public static void bubbleSort(int[] arr){

for(int x=0;x<arr.length-1;x++){

//-x:让每一次比较的 元素减少;-1:避免角标越界
for(int y=0;y<arr.length-x-1;y++){
</span><span style="font-size:12px;color:#000000;background-color: rgb(255, 255, 255);">
if(arr[y] > arr[y+1]){

int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}

//打印数组的方法
public static void printArray(int[] arr){

System.out.print("[");
for(int i=0;i<arr.length;i++){

if(i!=arr.length-1){
System.out.print(arr[i]+",");
}else{
System.out.println(arr[i]+"]");
}
}
}</span>


运行结果:

如果想要降序排序,只需要将嵌套循环,if语句中的条件语句写成小于号,就OK啦!
好啦,简单的冒泡排序就完成啦~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: