冒泡排序
总共有8大排序但是冒泡排序最为出名
冒泡的代码也很简单
外层判断走多少次
内层依次比较判断
public static void main (String[] args){
//冒泡排序
/*
1.比较数组中,两个相邻的元素,如果第一个数比二个数大就调换他们的位置
2.每一次比较就会产生一个最大,一个最小的数
3.下一次就可以少排一次序
4.依次循环直到结束
*/
int[] a = {
5,555,2,99,816,21546,1};
sort(a);
// int sort = sort(a);调用完我们的方法以后返回一个重新排列的数组
System.out.println(Arrays.toString(a));
}
public static int[] sort (int[] arrays){
//建立一个临时变量temp
int temp = 0;
//外层循环判断我们需要走多少次
for (int i = 0;i<arrays.length-1;i++){
/*内层循环,设置一个为0的数,在比较a,b两个数,如过a比b大 则a与0交换,b在与0交换,a在与0交换,处于一个三角形交换。 */ //通过flag标志符来减少没有意义的比较
boolean flag = false;
for(int j = 0;j<arrays.length-1-i;j++){
//length-1-i是为了保证不超过i
if(arrays[j] > arrays[j+1]){
temp = arrays[j];
arrays[j] = arrays[j+1];
arrays[j+1] = temp;
flag = true;
}
}
}return arrays;
}
package com.oop.Demo07;
//冒泡排序
public class Demo01 {
public static void main(String[] args) {
//1.创建一个数组
int[] array = {
54,43,2,4,94,23,24};
//2.遍历数组
for (int i = 0; i < array.length-1;i++) {
//如果有8个元素就只会比较7次所以小于array.length-1
for (int j = 0; j < array.length-1-i; j++) {
//外层判断循环多少次
//array.length-1-i 每一轮都减了一次i,所以在-1的基础上减-i
//判断数组中的大小
boolean flag = true;
if(array[j] > array[j+1]){
//int一个空变量进行交换
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
}
//遍历排完序后的数组
for (int a : array) {
System.out.print(a+" ");
}
System.out.println();
}
}