1 /* 2 Code function : 冒泡排序算法 3 冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值 4 时间复杂度:O(n*n) 5 空间复杂度:1 6 */ 7 List<Integer> arrayList = new List<Integer>{3,5,4,2,6,1,10,7,8,11,4,6,13}; 8 //外层循环控制排序趟数 9 for(Integer i = 1; i< arrayList.size(); i++) { 10 11 //内层循环控制每一趟排序多少次 。 每次最后面的值都是最大值了 。 所以后面的都可以不用排序了。 12 for(Integer j = 0; j< arrayList.size()-1; j++) { 13 if(arrayList[j] > arrayList[i]) { 14 Integer temp = arrayList[j]; 15 arrayList[j] = arrayList[i]; 16 arrayList[i] = temp; 17 } 18 } 19 System.debug(LoggingLevel.INFO, '*** arrayList111: ' + arrayList); 20 } 21 System.debug(LoggingLevel.INFO, '*** arrayList: ' + arrayList);
插入排序代码如下:
1 /* 2 Code function : 插入排序算法 3 时间复杂度:O(n*n) 4 空间复杂度:O(1) 5 */ 6 List<Integer> arrayList = new List<Integer>{3,5,4,2,6}; 7 //外层循环控制排序趟数 8 for(Integer i = 1; i< arrayList.size(); i++) { 9 Integer j; 10 Integer p = arrayList[i]; 11 //内层循环控制剩下已经排序的数量 12 for(j = i-1; j >= 0; j--) { 13 if(arrayList[j] > p) { 14 //如果要插入,则后面的数往后平移一个单位 15 arrayList[j+1] = arrayList[j]; 16 } 17 else{ 18 break; 19 } 20 } 21 arrayList[j+1]=p; 22 }
插入排序算法如下:
1 /* 2 Code function : 选择排序算法 3 选择排序算法的优点:每次遍历,找出最小值, 直到i=size-1 4 时间复杂度:O(n*n) 5 空间复杂度:1 6 */ 7 List<Integer> arrayList = new List<Integer>{3,5,4,6,1,10,7,4,6,13}; 8 //外层循环控制排序趟数,每次默认把第一个值当成最小值 9 for(Integer i = 0; i< arrayList.size()-1; i++) { 10 Integer min = arrayList[i]; 11 12 //内层循环控制每一趟排序多少次。往后比较 13 for(Integer j = i+1; j< arrayList.size()-1; j++) { 14 //如果后面遇到更小值,则和刚开始定义的最小值交换 15 if(min > arrayList[j]){ 16 arrayList[i] = arrayList[j]; 17 arrayList[j] = min; 18 min = arrayList[i]; 19 20 } 21 } 22 System.debug(LoggingLevel.INFO, '*** arrayList111: ' + arrayList); 23 } 24 System.debug(LoggingLevel.INFO, '*** arrayList: ' + arrayList);