冒泡排序
2018-07-12 本文已影响0人
lishangfu
思路:假如有几个数字int[] arr = {3, 2, 89, 12}; 按照从大到小排序。
arr[j] 和 arr[j+1] 比较 如果 前者比后者小,把前者和后者调换顺序,两两调换后一轮下来 最小的会被排到最后去。每一轮j都从0开始,当i轮排序,就有最后面的i个数字因为他是最小的,所以后面的每轮都不用理他了,也就是 arr.length-1-i 往后的数不用管了,如上,第一轮有4个数字 i为0 ,那么arr.length-1-i 为3,也就是下标是3以后的可以不用管,3往后没有数字,所以第一轮所有的数字都要参加比较,第二轮i=1 arr.length-1-i 为2 也就是说 下标2后面的 下标为3的数字不用比了,实现代码如下:
package com.sam.example;
import java.util.Arrays;
/**
* 冒泡排序
*
*/
public class BubbleSort {
/**
*
* @param array
* @return
*/
public static int[] sort(int[] array) {
for(int i=0; i<array.length-1; i++) {
for (int j=0; j<array.length-1-i; j++) {
if(array[j]>array[j+1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
public static void main(String[] args) {
int[] arr = {3, 2, 89, 12};
System.out.println(Arrays.toString(BubbleSort.sort(arr)));
}
}