Java-数据结构和算法-冒泡排序 (bubble sort)
连概述都懒得写了,直接写相关的代码和说明吧
一般来说,按大学的套路,先有导论,然后有概述,听得大家都睡觉了。
冒泡排序
原始数据[344,566,4,345,23,56673,456,34,5,78,45,23]
我们希望从小到大排序
算法描述
- 取出第一个数据,与下一个数据进行比较,如果比它大,则交换位置,一直到最后一个,如此确保了最后一个是最大的数
- 取出第一个数据,与一下下数据进行比较,如果比它大,则交换位置,一直到倒数第二个,如果确保了倒数第二个是第二大的数。
- .....
第一轮排序
第二轮排序,比对到倒数第二个即可,因为我们第一轮对比已经确保了最大的在最右边了。
第三轮排序
第四轮排序
第五轮排序
代码
public class BubbleSort{
public static void main(String[] args){
int[] data = new int[]{344,566,4,345,23,56673,456,34,5,78,45,23};
for(int i = 0;i<data.length-1;i++){
for(int j = 0;j<data.length - i-1;j++){
int left = data[j];
int right = data[j+1];
if(left>right){
int temp = left;
data[j] = right;
data[j+1] = temp;
}
}
for(int h = 0;h<data.length;h++){
System.out.print(data[h]+",");
}
System.out.println("");
}
}
}
代码狗屎一样,是吧!哈哈,看后面的结果输出吧!
图解
344,4,345,23,566,456,34,5,78,45,23,56673,
4,344,23,345,456,34,5,78,45,23,566,56673,
4,23,344,345,34,5,78,45,23,456,566,56673,
4,23,344,34,5,78,45,23,345,456,566,56673,
4,23,34,5,78,45,23,344,345,456,566,56673,
4,23,5,34,45,23,78,344,345,456,566,56673,
4,5,23,34,23,45,78,344,345,456,566,56673,
4,5,23,23,34,45,78,344,345,456,566,56673,
4,5,23,23,34,45,78,344,345,456,566,56673,
4,5,23,23,34,45,78,344,345,456,566,56673,
4,5,23,23,34,45,78,344,345,456,566,56673,
太多了,我就不画图了,理解就好。
就是每一次交换,保证了大的在左边。
如此遍历下来,即可完成排序,但是感觉效率不咋滴呀,如果数据量非常大的话,循环下来,则时间维度非常大。