package alg.com.sort;
public class Sort {
public static void main(String[] args) {
int[] datas = {9,1,4,3,5,6,7,2,8};
//Sort.insert(datas);
//Sort.bubbling(datas);
//Sort.quick(datas,0,datas.length-1);
Sort.select(datas);
for(int data:datas){
System.out.println(data);
}
}
//直接插入排序 O(n^2)
public static void insert(int[] datas){
for(int i=1;i<datas.length;i++){
int temp = datas[i];
int flag = i;
for(int j=i-1;j>-1;j--){
if(temp<datas[j]){
datas[j+1] = datas[j];
flag = j;
}
}
datas[flag] = temp;
}
}
//冒泡排序O(n^2)
public static void bubbling(int[] datas){
boolean flag = true;
int temp = 0;
for(int i=0;i<datas.length;i++){
flag = true;
for(int j=datas.length-1;j>i;j--){
if(datas[j-1]>datas[j]){
flag = false;
temp = datas[j-1];
datas[j-1] = datas[j];
datas[j] = temp;
}
}
if(flag){
break;
}
}
}
//快速排序O(nlogn)
public static void quick(int[] datas,int low,int high){
int start = low;
int end = high;
int key = datas[low];
while(start<end){
while(end>start && datas[end]>key)
end--;
if(datas[end]<=key){
int temp = datas[end];
datas[end] = key;
key = temp;
}
while(end>start && datas[start]<key){
start++;
}
if (datas[start] >= key) {
int temp = datas[start];
datas[start] = key;
key = temp;
}
}
if(start>low)
quick(datas,low,start-1);
if(end<high)
quick(datas,end+1,high);
}
//选择排序O(n^2)
public static void select(int[] datas){
for(int i=0;i<datas.length;i++){
int flag = i;
for(int j=i+1;j<datas.length;j++){
if(datas[j]<datas[flag]){
flag = j;
}
}
int temp = datas[i];
datas[i] = datas[flag];
datas[flag] = temp;
}
}
}
常用的排序算法
最新推荐文章于 2023-06-30 19:45:37 发布