JAVA八大排序算法(更新中)
直接插入排序(稳定)
时间复杂度:Ο(n²)
空间效率:一个辅助存储单元。
import java.util.Scanner;
public void Main{
public static void main(String[] args){
int[] arr={6,9,3,4,7,8};
Sort(arr);
for(int i=0;i<arr.lenght+1;i++){
System.out.println(arr[i]+' ');
}
}
public static void Sort{int a[]){
for(int i=1;i<a.lenght;i++){
int temp=a[i];
int position=i;
for(int j==i-1;j>0;j--){
if(temp<a[j]){
a[j+1]=a[j];
position=j;
}else{break;}
a[position]=temp;
}
}
}
}
希尔排序(插排升级、不稳定)
T(n) = O(Nlog2N)
import java.util.ARRAYS;
import java.util.Scanner;
public void Main{
public static void main(String[] args){
int[] arr={6,9,3,4,7,8};
Sort(arr);
for(int i=0;i<arr.lenght+1;i++){
System.out.println(arr[i]+' ');
}
}
public static void Sort{int a[]){
int gap=a.lenght;
while(gap>0){
if(a[])
gap=fap/2;
}
}
}
简单选择排序
设有n个数,则进行n次操作,每次操作选出[i,n]的最小元素和a[i]交换,O(n2)
//升序
import java.util.Scanner;
public class 简单选择排序 {
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=sc.nextInt();
}
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
if(a[j]<a[i]){
int temp=a[i];//交换
a[i]=a[j];
a[j]=temp;
}
}
}
for(int i=0;i<n;i++){
System.out.println(a[i]);
}
}
}