排序学习
主要排序的对比
快速排序的空间复杂读应该为log2n
选择排序
//选择排序
@Test
public void TestSelectSort() {
Integer arr[] = {4, 5, 6, 8, 0, 8, 6};
for (int y=0;y<arr.length-1;y++) {
//由于选择排序是通过先确定一个最小值
int minPoi = y;
for (int i = y+1; i < arr.length; i++) {
if (arr[minPoi] > arr[i]) {
minPoi = i;
}
}
int temp = arr[y];
arr[y] = arr[minPoi];
arr[minPoi] = temp;
System.out.println("第“”"+(y+1)+"次遍历");
for (Integer arrValue : arr
) {
System.out.println(arrValue);
}
}
for (Integer arrValue : arr
) {
System.out.println(arrValue);
}
}
选择排序加强版
public void exchange(Integer arr[],Integer minPoi,Integer y){
int temp = arr[y];
arr[y] = arr[minPoi];
arr[minPoi] = temp;
}
@Test
public void selectSortOptimization(){
//使用的方式是在遍历时找出最小值以及最大值
Integer arr[]={1,231,13,2,34,51,0,8,19};
for (int y=0;y<arr.length-1-y;y++) {
int minPoi = y;
int maxPoi = y;
for (int i = y+1; i < arr.length-y; i++) {
if (arr[minPoi] > arr[i]) {
minPoi = i;
}
if (arr[maxPoi] < arr[i]) {
maxPoi = i;
}
}
System.out.println(arr[minPoi]);
System.out.println(arr[maxPoi]);
exchange(arr, minPoi, y);
exchange(arr, maxPoi, arr.length-1-y);
}
for (Integer arrValue : arr
) {
System.out.println(arrValue);
}
}