程序设计中,我们会经常用到数组的排序,方便统计和查询。当然面试的时候也会经常问到
下面是两种比较常见的排序。
1.冒泡排序
基本思想
比较相邻的两个值,如果满足条件就交换值,把小的值移到数组前面,大的移动到后面
算法实现
public class ArraySortBubble {
public static void main(String[] args) {
int[] array = new int[]{5,10,20,7,100,50,33,25}; //创建数组
System.out.println("排序前输出:"+Arrays.toString(array));
sort(array);//调用排序算法
System.out.println("排序后输出:"+Arrays.toString(array));
}
/**
* 冒泡排序算法
* @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;
}
}
输出结果:
2.选择排序算法
基本思想
将指定排序位置与其他数组元素分别对比,满足条件就交换元素值,每次比较选择出最大(或者最小)的元素,直到全部排序完成。
算法实现
public class ArraySelectSort {
public static void main(String[] args) {
int[] array = {5,2,38,69,27,66,11,19,25};
System.out.println("选择排序前:"+ Arrays.toString(array));
sort(array);
System.out.println("选择排序后:"+ Arrays.toString(array));
}
/**
* 直接选择排序
* @param array 要排序的数组
* @return
*/
public static int[] sort(int[] array){
int index;
for (int i = 1;i < array.length;i++) {
index = 0;
for (int j = 1; j <= array.length - i;j++) {
if (array[j] > array[index]) { //选择出数组中最大值的索引坐标
index = j;
}
}
//交换在位置array.length-1和index(最大值)上的两个数
int temp = array[array.length - i]; //最后一个元素值保存到临时变量
array[array.length - i] = array[index]; //将大的元素值往后移
array[index] = temp; //临时变量复制到交换的变量
}
return array;
}
}
输出结果:
Fighting for a better tomorrow!