时间复杂度为o(n^2)
public class SelectSort { public static int[] sort(int[] arr){ //初始化最小下标 int minIndex = 0; //外层循环逐个取得需要逐次比较的下标 for (int i = 0 ; i < arr.length ; i++){ //将i赋给最小下标 minIndex = i; //内层循环 进行基于当前元素到数组末尾的逐次比较。 for (int j = i ; j < arr.length ; j++){ //逐次比较 if (arr[j] < arr[minIndex]){ minIndex = j; } } //进行交换 swap(i,minIndex,arr); } return arr; } }2、插入排序
原理:就像玩扑克,我们总会把前面的牌都变得有序,然后后面的牌依次比较,插入。
时间复杂度: o(n) - o(n^2)
public class InsertSort { public static int[] sort(int[] arr){ //从第二个元素开始,依次向前比较,只要后面的比前面的小, //就继续比,直到大,插入,逐个向后移动 for (int i = 1 ; i < arr.length; i++){ //判断当前元素是否小于前一个元素,小于进入循环,交换 for (int j = i ; j > 0 && arr[j] < arr[j-1] ; j--){ swap(j,j-1,arr); } } return arr; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)