冒泡排序:两层循环,外层冒泡轮数,内层依次比较数值,时间复杂度为O(n^2)
冒泡排序简介(从小到大)
依次比较两个数的大小,若第一个数比第二个数大,交换两个数的位置。
对每一对相邻的数据做同样的操作,从第一对,直至最后一对,每一轮能排序出一个数字
源代码:
package com.qiang.array;
import java.util.Arrays;
//冒泡排序
public class TestDemo06 {
public static void main(String[] args) {
int [] a = {12,34,65,76,87};
int [] b = b(a);//return array 返回值为数组
System.out.println(Arrays.toString(b));
}
public static int[] b(int [] array){
int temp = 0;
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1-i; j++) {
if (array[j+1]>array[j]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
return array;//返回值为数组
}
}
优化后代码,加入scanner语句,可自定义数组长度,自定义数组中的数据,该代码为从大到小排列。
源代码
public class TestDemo09 {
public static void main(String[] args) {
int d;
Scanner num = new Scanner(System.in);
System.out.println("排列数据个数:");
d = num.nextInt();
int [] a = new int[d];
System.out.println("请输入数据:");
for (int i = 0; i < a.length; i++) {
a[i] = num.nextInt();
}
int [] b = b(a);
System.out.println("由大到小排列为\n"+Arrays.toString(b));
num.close();
}
public static int[] b(int [] array){
int c = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length-1; j++) {
if(array[j+1]>array[j]){
c = array[j];
array[j] = array[j+1];
array[j+1] = c;
}
}
}
return array;
}
}
若想要从小到大排列,可以将if语句中的大于更改为小于。