评估算法的指标
时间复杂度 O(忽略系数的高阶项) 取最差情况
空间复杂度
排序算法
选择排序
从第一个元素开始,设置当前元素下标为最小值下标,对比找出当前循环种的最小值下标,最后将此次循环中最小值与当前元素值互换
public class SelectionSort {
public static void main(String[] args) {
int[] a = {6,2,1,4,5,3,7};
for (int i = 0 ; i < a.length -1 ; i++){
//假设最小值存放在第一个位置
int min = i;
for (int j = i + 1 ; j < a.length ; j ++){
if(a[j] < a[min]){
min = j;
}
}
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
for(int i = 0; i < a.length ;i ++){
System.out.print(a[i]);
}
}
}
冒泡排序
从第一个元素开始,与后续元素对比,后续元素小则互换位置
public class BubbleSort {
public static void main(String[] args) {
int[] a = {6,2,1,4,5,3,7};
for (int i = 0 ; i < a.length -1 ; i++){
for (int j = i + 1 ; j < a.length ; j ++){
if(a[j] < a[i]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for(int i = 0; i < a.length ;i ++){
System.out.print(a[i]);
}
}
}
插入排序
以第一个元素开始,与左边元素对比,左边元素小则互换位置
public class InsertionSort {
public static void main(String[] args) {
int[] a = {6,2,1,4,4,3,7};
for (int i = 0 ; i < a.length; i++){
for (int j = i -1 ; j > -1 ; j --){
if(a[j + 1] < a[j]){
int temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
for(int i = 0; i < a.length ;i ++){
System.out.print(a[i]);
}
}
}