大三的我看到身边的同学慢慢出去实习,心里开始烦躁。但烦躁又有何意义,不如将心静下来,巩固自己的基础。闲话不多说,开始我自己的冒泡排序。
冒泡排序思想正如它的名字一样,卓次将最大的元素交换到其相应的位置来进行排序。
原版:
package com.sort;
public class BubblingSort {
public static void main(String[] args) {
int[] arr={1,3,2,8,6,4,9,5,7,0};
bobbling(arr);
displayArray(arr);
}
/**
* 冒泡排序
* @param arr
*/
public static void bobbling(int[] arr)
{
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1; j++) {
if(arr[j]>arr[j+1])
{
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
/**
* 遍历数组
* @param arr
*/
public static void displayArray(int[] arr)
{
for (int i : arr) {
System.out.println(i);
}
}
}
优化改进版:
package com.sort;
public class BubblingSortOptimizing {
public static void main(String[] args) {
int[] arr={1,3,2,8,6,4,9,5,7,0};
bobbling(arr);
displayArray(arr);
}
/**
* 冒泡排序
* 1.在第二层的for循环中,比较的次数应该会随着遍历次数越来越少
* 2.通过flag标记是否排序完成,如果排序完成,便停止程序
* @param arr
*/
public static void bobbling(int[] arr)
{
//1.在第二层的for循环中,比较的次数应该会随着遍历次数越来越少,故通过i值递减来给j赋遍历值
//2.通过flag标记是否排序完成,如果排序完成,便停止程序
for (int i = arr.length; i >0; i--) {
boolean flag=true;
for (int j = 1; j < i; j++) {
if(arr[j-1]>arr[j])
{
int temp=arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
flag=false;
}
}
if(flag)
break;
}
}
/**
* 遍历数组
* @param arr
*/
public static void displayArray(int[] arr)
{
for (int i : arr) {
System.out.println(i);
}
}
}