数据结构学习的排序部分成果分享:
此博客共分享七种排序:选择排序、冒泡排序、插入排序、归并排序、快速排序、堆排序、基数排序
1.选择排序:
代码部分(java):
public static void selectSort(int[] array){
if(array==null || array.length<2){
return;
}
for(int i =0 ; i< array.length-1 ; i++){
int minIndex = i;
for(int j = i+1; j<array.length;j++ ){
minIndex = array[j] < array[minIndex] ? j : minIndex;
}
swap02(array,i,minIndex);
}
}
public static void swap02(int[] array,int i,int j){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
解读:定义一个数组:{2,5,3,1,4}
一次选择排序在5个数中选出最小的一个数,在该数组中即为1,此时下标minIndex即为1的下标,内部循环的最后让最小的1与第一个数交换
二次排序在除1以外的四个数中进行,过程如上,此时下标minIndex即为2的下标,同样在内部循环的最后让2与数组第二个数字交换
.........
依次重复该过程找出剩余数字中的最小值使其处于余下数字的第一位即可完成整体排序
时间复杂度:O(N^2) 空间复杂度:O(1)
稳定性:不具有稳定性
2.冒泡排序
代码部分:
public static void bubbleSort(int[] array) {
if (array == null || array.length <2) {
return;
}
for (int i = array.length-1; i >0; i--) {
for ( int j = 0; j < i; j++){
if (array[j] > array[j+1]) {
swap01(array, j, j+1);
}
}
}
}
解读:定义一个数组{2,5,3,1,4}
整体思想就是相邻两个数比较,每次让