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 }