冒泡算法
比较相邻的元素,如果前一个元素比后一个元素大,就交换两个元素的位置。
每冒一次泡,最后位置的元素就是最大值。
public class BubbleSort {
public static void main(String[] args) {
int[] array = {9,8,7,6,5,4,3};
//表示总共需要比较多少轮,也就是需要冒几次泡:有n个元素,需要比较n-1轮
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;
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}
}
选择排序
先原始元素里找到最小的元素,放在起始位置。(将第一个元素与后面的元素依次比较,把最小的元素放在第一个位置上)
再从剩余的元素里找到最小值,放在第二个位置。以此类推
public class SelectionSort {
public static void main(String[] args) {
int[] array = {9,8,7,6,5,4,3};
//表示总共需要找几次最小值,有n个元素,需要找n-1次
for (int i = 0; i < array.length - 1 ;i++){
//比较第i个元素和它后面每个元素的大小,把较小的放在第i个元素的位置上
for (int j = i + 1;j < array.length ;j++){
if (array[j] < array[i]){
int temp;
temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
}
System.out.println(Arrays.toString(array));
}
}
插入排序
(1)将第一个元素看做有序序列,将第二个及之后所有元素看做未排序序列
(2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。倒序遍历有序序列。
public class InsertSort {
public static void main(String[] args) {
int[] array = {9,8,7,6,4,2,4,3,5};
//将第一个元素作为有序序列,从第二个元素开始进行
for (int i = 1; i<array.length ;i++){
/*
当前元素为a[i],依次倒序比较相邻的元素,
前面大于后面,交换元素
前面小于等于后面,就退出循环
*/
for (int j = i; j>0 ;j--){
if (array[j-1] > array[j]){
int temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
} else {
break;
}
}
}
System.out.println(Arrays.toString(array));
}
}