java三种排序算法
1.插入排序
插入排序,稳定(改变一部分数组数值的位置)(时间最坏复杂度 O(n^2)最优均为O(n))
插入排序的算法核心为把当前插入的位置之前变为有序
2.冒泡排序
冒泡排序,不稳定(会改变大部分部分数组数值的位置)(时间最坏复杂度 O(n^2)最优均为O(n))
冒泡排序每次出来一个最值是其核心算法所在
3.选择排序
选择排序,不稳定(会改变大部分数组原本位置的值)(时间最坏最优复杂度均为O(n^2))
选择排序是拿每一个数和其后面所有的数比较
import java.util.Arrays;
public class Test2 {
//java三种排序算法(插入,冒泡,顺序)及其时间复杂度
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[]{3,1,9,4,8,9,2,10};
//插入排序
insertSort(arr);
//冒泡排序
bubleSort(arr);
//选择排序
selectSort(arr);
}
//插入排序,稳定(改变一部分数组数值的位置)(时间最坏复杂度 O(n^2)最优均为O(n))
//插入排序的算法核心为把当前插入的位置之前变为有序
public static void insertSort(int[] arr){
for (int i = 1; i < arr.length; i++) {
int k=arr[i];
int j;
for ( j= i-1; j >=0; j--) {
if(arr[j]>k){
arr[j+1]=arr[j];
}else{
break;
}
}
arr[j+1]=k;
}
System.out.println(Arrays.toString(arr));
}
//冒泡排序,不稳定(会改变大部分部分数组数值的位置)(时间最坏复杂度 O(n^2)最优均为O(n))
//冒泡排序每次出来一个最值是其核心算法所在
public static void bubleSort(int[] arr){
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j < arr.length-i; j++) {
if(arr[j]>arr[j+1]){
int max=arr[j];
arr[j+1]=arr[j];
arr[j]=max;
}
}
}
System.out.println(Arrays.toString(arr));
}
//选择排序,不稳定(会改变大部分数组原本位置的值)(时间最坏最优复杂度均为O(n^2))
//选择排序是拿每一个数和其后面所有的数比较
public static void selectSort(int[] arr){
for (int i = 0; i < arr.length; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i]>arr[j]){
int max=arr[i];
arr[i]=arr[j];
arr[j]=max;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
打印输出:[1, 2, 3, 4, 8, 9, 9, 10]