常见排序算法,待补充树

1,快速排序
非常高效但不稳定的排序算法,平均复杂度onlog(n),最坏o(n2)
 
public class Test1Practice {
 
public static void quickSort(int[] arr,int low,int high){
int start = low;
int end = high;
int key = arr[low];
while(start < end){
while(start < end && arr[end] >= key)
end--;
if(arr[end]<= key){
int temp = arr[end];
arr[end] = arr[start];
arr[start] = temp;
}
while(start < end && arr[start] <= key)
start++;
if(arr[start] >= key){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
if(start>low) quickSort(arr,low,start-1);//左边序列。第一个索引位置到关键值索引-1
if(end<high) quickSort(arr,end+1,high);
 
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[]{1,32,23,45,21,3,6,49,65,67,8,17};
int low = 0;
int high = arr.length ;
quickSort(arr,low,high-1);
for(int a : arr){
if(a != arr[arr.length -1])
System.out.print(a + ",");
else
System.out.print(a);
}
}
 
}
 
2,冒泡排序算法
稳定算法,平均o(n2),最坏o(n2)
public static void bubbleSort(int[] arr){
for(int i=0; i< arr.length-1;i++){
for(int j=0; j < arr.length-1-j;j++){
if(arr[j] > arr[j+1]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
 
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[]{56,32,23,45,21,3,6,49,65,67,8,17};
bubbleSort(arr);
for(int a : arr){
if(a != arr[arr.length -1])
System.out.print(a + ",");
else
System.out.print(a);
}
//数组转为List
}
 
3,选择排序算法
//对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录的位置与第一个记录的位置交换;接着对不包括第一个记录以外的其他记录进行第二次比较,得到最小记录并与第二个位置记录交换;
不稳定算法,平均o(n2),最坏o(n2)
public static void selectSort(int[] arr){
 
for(int i =0; i< arr.length-1;i++){
int index=i;
for(int j=i+1;j<arr.length;j++){
if(arr[j]<arr[index])
index=j;
}
if(index != i){
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
 
4,直接插入排序
稳定算法,平均o(n2),最坏o(n2)
 
列表,集合的常见操作
1,数组,字符串的数组转为list
String[] stringArray = {"hello","world","B"};
不能把基本类型的数组转为列表
[] intArray = {, , , };
List<Integer> list = Ints.asList(intArray);
,是定长的,list.set(0, 100);
posted @ 2018-06-05 22:43  阿孜  阅读(105)  评论(0编辑  收藏  举报