排序算法(Apex 语言)

 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);

 

 

posted @ 2018-07-25 15:14  一砂世界  阅读(428)  评论(0编辑  收藏  举报