冒泡排序
排序的思想
相邻的两个元素的关键字进行比较,小的元素向前移动(也
就是这里理解的向上冒泡),大的元素向后移动(也就是向下
沉)。
每一趟比较能确定一个最大的数。
每一趟比较结束之后,待排规模就-1。
排好之后:
1、时间复杂度
T(n)=O(n*n);
2、空间复杂度
S(n)=O(1);
3、稳定性
稳定
适用范围
n较小时。
局部有序时。
在n个待排序的数据中选择前k(k<n时)的最大值。
Java实现代码
package com.xingyun.paixu;
import java.util.Scanner;
/*
*
* 冒泡排序:将相邻的两个元素进行比较,大的向后移动,也就是向下沉,小的向前移动,也就是向上冒泡
* 每一趟的比较都能确定一个最大值(由自己决定,也可能是最小值,取决于你是升序还是降序)。
* 每一趟比较完之后待排序列规模-1。
*
* */
public class MaoPaoPaiXu {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int s=11;
int[] stu=new int[s];
boolean bool=true;
System.out.println("请输入要排序的序列规模"+(s-1));
for(int i=1;i<stu.length;i++) {
stu[i]=input.nextInt();
}
System.out.println("开始!");
int swap=0;
//n个数组元素需要进行n-1趟就能排好
for(int i=0;i<stu.length-1;i++) {
//每一次排序都比之前的比较次数少1个,因为每一次都能确定一个值的位置,而且不用和自身比较
for(int k=0;k<stu.length-i-1;k++) {
if(stu[k]>stu[k+1]) {
swap=stu[k+1];
stu[k+1]=stu[k];
stu[k]=swap;
}
}
}
System.out.println("排好序之后的数组为:");
for(int w:stu) {
System.out.print(w+"\t");
}
}
}