冒泡排序之java实现
来源:互联网 发布:sharp扫描软件 编辑:程序博客网 时间:2024/06/07 08:11
(建议在学习排序算法的同时,顺便练习对数组数据的输入:本博客中冒泡排序、优化版、选择排序(给定数组数据)。插入排序、希尔排序(键盘输入数据)。快速排序(电脑自动以随机数的形式输入数据))
冒泡排序:重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
过程:
1、比较相邻的元素,将小的放前面,大的放后面。
2、从前往后依,次对每一对相邻元素作同样的操作。这样最后一个元素将会是最大值。
3、针对无序区间所有的元素重复以上的步骤。
4、重复步骤的元素依次减少,直到排列完毕。
特点:
1、需比较(n-1)(n-2)+...+3+2+1=n(n-1)/2次,时间复杂度为O(n^2);如果本身就已排序完成的数据,只需比较n-1次即可,时间复杂度为O(n)。
2、冒泡排序是对相邻两元素进行比较交换,所以并不会改变相等元素的顺序,故是稳定排序法。
3、只需一个额外空间,所以空间复杂度为O(1)。4、适用于数据量小或有部分数据已经过排序的情况。
核心代码:
public void bubble() { //最多进行length-1次排序 for(int i = arr.length-1; i > 0; i--) { //对当前无序区间进行排序 for(int j = 0; j < i; j++) { //比较相邻的两个数,不符合排序顺序则交换 if(arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } System.out.print("第"+(arr.length-i)+"次排序后的结果:"); //打印每次排序结果 showdata(); } }
可对核心代码进行优化,以便提高运行效率,详见:http://blog.csdn.net/qq_35383263/article/details/60469758
完整代码:
public class BubbleSort{int arr[] = {5,8,1,3,9,7};public static void main(String args[]) {BubbleSort bst = new BubbleSort();System.out.print("原数组为:");//遍历原始数组bst.showdata();//对数组进行排序bst.bubble();System.out.print("完成排序后的数组:");//显示最终结果bst.showdata();}public void showdata() {for(int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();}public void bubble() {//最多进行length-1次排序for(int i = arr.length-1; i > 0; i--) {//对当前无序区间进行排序for(int j = 0; j < i; j++) {//比较相邻的两个数,不符合排序顺序则交换if(arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}System.out.print("第"+(arr.length-i)+"次排序后的结果:");//打印每次排序结果showdata();}}}
程序执行结果:
原数组为:5 8 1 3 9 7
第1次排序后的结果:5 1 3 8 7 9
第2次排序后的结果:1 3 5 7 8 9
第3次排序后的结果:1 3 5 7 8 9
第4次排序后的结果:1 3 5 7 8 9
第5次排序后的结果:1 3 5 7 8 9
完成排序后的数组:1 3 5 7 8 9
转载请标明出处,原文地址:http://blog.csdn.net/qq_35383263/article/details/60469679
- Java实现之冒泡排序
- 冒泡排序之java实现
- 冒泡排序之Java实现
- 冒泡排序之java实现
- 冒泡排序之Java实现
- 交换排序之冒泡排序Java实现
- Java实现排序算法之冒泡排序
- java实现交换排序之冒泡排序
- java实现排序算法之冒泡排序
- 冒泡排序法之Java实现
- 数据结构学习之冒泡排序Java实现
- 冒泡排序法之Java实现
- 冒泡排序(Bubblesort)之Java实现
- 冒泡排序(Bubblesort)之Java实现
- 冒泡排序(Bubblesort)之Java实现
- 数据结构之冒泡排序的Java实现
- 数据结构之冒泡排序java实现
- Java之冒泡排序的实现
- java 导入https证书
- win7/win10 Keyshot 6 64位 安装教程
- volatile关键字
- 一个踢了一刻钟 一个上场半小时 中超U23球员的尴尬
- Hibernate执行流程和关系映射
- 冒泡排序之java实现
- 根深蒂固的ASCII/ISO 8859-1
- 基本语言(二)
- Lua 模式匹配
- 138. Copy List with Random Pointer(unsolved)
- 1037: [ZJOI2008]生日聚会Party
- Android中Broadcast详解
- django+haystack+solr 实现网站全文检索
- java源码解读之ClassLoader(loadClass方法)