冒泡排序

冒泡排序

主要思想:冒泡排序属于交换排序,即为在待排序序列中选取两个记录,如果这两个记录反序,则交换他们的位置。交换可以消除反序对,当所有反序对都被消除后,排序也就完成了。

过程

将待排序的记录数列划分成有序区和无序区(排序顺序,由小到大)每一趟排序结果找出Arry[]中最大的数,数字数量依次减少。
记录序列:3 2 5 1 6
第1趟 2 3 1 5 6
第2趟 2 1 3 5 6
第3趟 1 2 3 5 6
第4趟 1 2 3 5 6

for(int i=0;i<Arry.length-1;i++) {//总共需要冒泡的次数
			for(int j=0;j<Arry.length-1-i;j++) {//每次冒泡的遍历
				if(Arry[j]>Arry[j+1]) {//将大的数依次后移
					int temp=Arry[j];
					Arry[j]=Arry[j+1];
					Arry[j+1]=temp;
				}
			}
	}

时间复杂度

冒泡排序的执行时间取决于排序的趟数。平均情况下,起泡排序的时间的时间复杂度与最坏情况下同数量级O(n^2)。最好情况下,正序。最坏情况下,每一次都需要移动。

空间复杂度

冒泡排序只需要一个记录的辅助空间,用来作为记录交换的暂缓单元。起泡排序是一种稳定的排序方法。

程序源码

/**
 * 
 */
package bubbleSort;

import java.util.Scanner;

/**
 * @author 期待
 *
 */
public class BubbleSort {
	/**
	 * @param args
	 */
	public static void Bubble(int Arry[]) {
		for(int i=0;i<Arry.length-1;i++) {
			for(int j=0;j<Arry.length-1-i;j++) {
				if(Arry[j]>Arry[j+1]) {
					int temp=Arry[j];
					Arry[j]=Arry[j+1];
					Arry[j+1]=temp;
				}
			}
	}
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		System.out.println("请输入几个数并用空格隔开:");
		  Scanner sc = new Scanner(System.in);
		  String str = sc.nextLine();
		  String[] arr  = str.split(" ");
		  int[] b = new int[arr.length];
		  for(int j = 0; j<b.length;j++) {
		   b[j] = Integer.parseInt(arr[j]);
		  }
		System.out.println(b.length);
	    Bubble(b);
	    for(int k=0;k<b.length;k++) {
	    	System.out.println(b[k]);
	    }
	}
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值