复习一下面试常问到的两种排序算法:
冒泡排序
概述:每轮比较都从第一个元素(索引为0的元素),相邻的2个元素进行比较,只要前面元素比后面元素大就交换,依次对所有的数据进行操作,直至所有数据按要求完成排序
图解
代码实现
**
* 冒泡排序
* @param array
* @return
*/
public static int[] bubbleSort(int[] array) {
if (array.length == 0)
return array;
for (int i = 0; i < array.length; i++)
for (int j = 0; j < array.length - 1 - i; j++)
if (array[j + 1] < array[j]) {
int temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
return array;
}
选择排序
概述:选中数组的某个元素,其后面的元素依次和选中的元素进行两两比较,只要前面元素比后面元素大就交换,依次从前到后选中每个元素,直至所有数据按要求完成排序
图解
代码实现
/**
* 选择排序
* @param array
* @return
*/
public static int[] selectionSort(int[] array) {
if (array.length == 0)
return array;
for (int i = 0; i < array.length; i++) {
int minIndex = i;
for (int j = i; j < array.length; j++) {
if (array[j] < array[minIndex]) //找到最小的数
minIndex = j; //将最小数的索引保存
}
int temp = array[minIndex];
array[minIndex] = array[i];
array[i] = temp;
}
return array;
}