Java中常用的数组排序方法有:快速排序、冒泡排序、选择排序、插入排序。先总结下其中的冒泡排序、选择排序、插入排序。
冒泡排序:
通过比较前后两个元素的大小,将较大的元素往下沉,可以得到一个升序元素的数组。
for(int i = 0;i<array.length;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;
}
}
选择排序:
预先假设一个最小元素的下表(比如a0),通过for循环将数组中的所有元素和其比较,如果小于所预设的最小元素,就将下标值交换,否则继续向后比较,直至选出最小元素的下标,与所预设的最小下标比较,如果不等则交换元素。
public static int[] xuanZe(int[] array){
//预先假设的最小元素的下标
for(int i = 0; i< array.length;i++){
int min_index = i;
//选择出最小元素的下标
for(int j = i+1;j<array.length;j++){
if(array[min_index] > array[j]){
//把小的元素下标与我定义的min_index进行交换
min_index = j;
}
}
//与我们预先假设的最下下标进行判断,不等,就进行交换
if(min_index != i){
int temp = array[min_index];
array[min_index] = array[i];
array[i] = temp;
}
}
插入排序:
假设前n-1个元素都是有序的,将要插入的元素从后往前与有序数组比较,找出相应位置插入。
public static int[] chaRu(int[] array){
//假设我们前n-1个元素是有序的
for(int i = 1 ;i<array.length;i++){
//从后面往前面进行插入元素
for(int j = i;j>0;j--){
if(array[j]<array[j-1]){
int temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}
return array;
}