排序算法(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);

 

 

转载于:https://www.cnblogs.com/asand/p/9366095.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值