最近准备换工作,复习一下常用算法。今天先跟大家分享一下最简单的两个排序。
冒泡排序
思路:一种交换排序,基本思想为:两两比较相邻记录的关键字,如果反序则交换,直至没有反序记录。
代码如下:
public static void testBubbleSort(int[] values) {
for (int i = 0; i < values.length; i++) {
for (int j = 0; j < values.length - i - 1; j++) {
int temp;
if (values[j] > values[j + 1]) {
temp = values[j];
values[j] = values[j + 1];
values[j + 1] = temp;
}
}
}
System.out.println();
System.out.print("冒泡排序-->");
for (int i : values) {
System.out.print(i + " ");
}
}
简单选择排序
思路:第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换。 先临时记录其位置,只有在一趟循环完以后确定了最小的数据,才会发生交换。
代码如下:
public static void simpleSelectionSort(int[] values) {
for (int i = 0; i < values.length; i++) {
int min = i;// 将当前下标定义为最小值下标
for (int j = i + 1; j < values.length; j++) {
if (values[min] > values[j]) {// 如果有小于当前最小值的关键字
min = j; // 将此关键字的下标赋值给min
}
}
if (i != min) { //若min不等于i,说明找到最小值,交换
int tmp = values[min]; //临时保存最小值
values[min] = values[i]; //把当前值存放到最小值的位置
values[i] = tmp; //把最小值存放到当前位置
}
}
System.out.println();
System.out.print("选择排序-->");
for (int k : values) {
System.out.print(k + " ");
}
}