分析各种排序算法的原理,分析他们的时间复杂度、空间复杂度。
结果我并没有真正的领悟到要这样分析。但是值得肯定的一点就是,利用排序算法可以简化一个问题。但是反过来说就是,这个东西就是靠自己去领悟。哎,但领悟也是需要积累的。另外,不单单是排序的问题,很多书也都提到了递归这个概念,但是这个东西也是没有很深的理解。
在这里把排序分为以下几点:
选择排序 插入排序 冒泡排序 归并排序 堆排序 快速排序 计数排序 基数排序 桶排序
1.选择排序
选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
选择排序的思想是:把当前元素和之后所有元素进行比较,如果前者大于后者则进行交换
如果所示:当角标i指到0时 那么j就从1到8 挨个比较 然后以此类推
用简单代码来实现就是
import java.util.*;
class xuanzepaixu{
public static void main(String[] args){
selectSort();
}
public static void selectSort(){
int[] arr={8,5,9,2,7,4,6,1,3};
for(int i=0;i<arr.length-1;i++){//-1是因为没有必要进行最后一个数字的比较
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}