用数组实现冒泡排序
定义
冒泡排序是一种比较简单的排序算法,这种排序通过比较两个相邻间的元素的大小进行排序。
代码基本实现
/**
* 方式一
* @param array
* @return
*/
public int[] sort1(int[] array){
int length = array.length;
if (length < 2){
throw new RuntimeException("需要排序的数组长度要大于等于2");
}
for (int i = 0; i < length-1; i++) {
for (int j = 0; j < 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;
}
代码优化实现
/**
* 方式二
* -问题:方式一存在一个问题,也就是需要排序的数组大致上是有序的,可能进行一两次排序之后,
* 数组就有序了,这个时候剩余的进行排序的过程就没有必要了。
* -优化:为了解决这个问题,可以使用一个变量用来说明数组在排序过程中是否已经是有序,即当
* 某次循环过程中没有相邻元素进行交换时,即表示数组已经排序完成,即可终止排序。
* @param array
* @return
*/
public int[] sort2(int[] array){
int length = array.length;
if (length < 2){
throw new RuntimeException("需要排序的数组长度要大于等于2");
}
for (int i = 0; i < length-1; i++) {
//使用这个变量用来表示某次循环是否进行了元素交换
boolean flag = true;
for (int j = 0; j < length-1-i; j++) {
if (array[j] > array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = false;
}
}
if (flag){
break;
}
}
return array;
}