/*
Code function : 冒泡排序算法
冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值
时间复杂度:O(n*n)
空间复杂度:1
*/
List<Integer> arrayList = new List<Integer>{3,5,4,2,6,1,10,7,8,11,4,6,13};
//外层循环控制排序趟数
for(Integer i = 1; i< arrayList.size(); i++) { //内层循环控制每一趟排序多少次 。 每次最后面的值都是最大值了 。 所以后面的都可以不用排序了。
for(Integer j = 0; j< arrayList.size()-1; j++) {
if(arrayList[j] > arrayList[i]) {
Integer temp = arrayList[j];
arrayList[j] = arrayList[i];
arrayList[i] = temp;
}
}
System.debug(LoggingLevel.INFO, '*** arrayList111: ' + arrayList);
}
System.debug(LoggingLevel.INFO, '*** arrayList: ' + arrayList);

插入排序代码如下:

 /*
Code function : 插入排序算法
时间复杂度:O(n*n)
空间复杂度:O(1)
*/
List<Integer> arrayList = new List<Integer>{3,5,4,2,6};
//外层循环控制排序趟数
for(Integer i = 1; i< arrayList.size(); i++) {
Integer j;
Integer p = arrayList[i];
//内层循环控制剩下已经排序的数量
for(j = i-1; j >= 0; j--) {
if(arrayList[j] > p) {
//如果要插入,则后面的数往后平移一个单位
arrayList[j+1] = arrayList[j];
}
else{
break;
}
}
arrayList[j+1]=p;
}

插入排序算法如下:

 /*
Code function : 选择排序算法
选择排序算法的优点:每次遍历,找出最小值, 直到i=size-1
时间复杂度:O(n*n)
空间复杂度:1
*/
List<Integer> arrayList = new List<Integer>{3,5,4,6,1,10,7,4,6,13};
//外层循环控制排序趟数,每次默认把第一个值当成最小值
for(Integer i = 0; i< arrayList.size()-1; i++) {
Integer min = arrayList[i]; //内层循环控制每一趟排序多少次。往后比较
for(Integer j = i+1; j< arrayList.size()-1; j++) {
//如果后面遇到更小值,则和刚开始定义的最小值交换
if(min > arrayList[j]){
arrayList[i] = arrayList[j];
arrayList[j] = min;
min = arrayList[i]; }
}
System.debug(LoggingLevel.INFO, '*** arrayList111: ' + arrayList);
}
System.debug(LoggingLevel.INFO, '*** arrayList: ' + arrayList);

排序算法(Apex 语言)的更多相关文章

  1. 快色排序算法(C语言描述)

    快速排序 算法思想 快速排序采用了一种分治策略,学术上称之为分治法(Divide-and-Conquer Method). 哨兵(如下算法中的key) 每趟排序将哨兵插入到数组的合适位置,使得哨兵左侧 ...

  2. 排序算法c语言描述---堆排序

    排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析. 文章规划: 一.通过自己对排序算法本身的理解,对每个方法写个小测试程序.具体思路分析不 ...

  3. 各种排序算法(C语言)

    #include <stdlib.h> #include <stdio.h> void DataSwap(int* data1, int* data2) { int temp ...

  4. 排序算法c语言描述---冒泡排序

    排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析. 文章规划: 一.通过自己对排序算法本身的理解,对每个方法写个小测试程序. 具体思路分析 ...

  5. 排序算法c语言描述---选择排序

    排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析. 文章规划: 一.通过自己对排序算法本身的理解,对每个方法写个小测试程序. 具体思路分析 ...

  6. 【转】九大排序算法-C语言实现及详解

    概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大, ...

  7. 排序算法C语言实现

    大学有一门课程叫做数据结构,严蔚敏的课本,其中详细介绍了集中经典的排序算法,学习复习反复几次,但是直到现在仍然只记得名字了,所以想记录下来,随时复习直至牢记于心.经常面试的朋友知道,排序算法在面试中出 ...

  8. 排序算法C语言实现——冒泡、快排、堆排对比

    对冒泡.快排.堆排这3个算法做了验证,结果分析如下: 一.结果分析 时间消耗:快排 < 堆排 < 冒泡. 空间消耗:冒泡O(1) = 堆排O(1) < 快排O(logn)~O(n) ...

  9. 史上最全单链表的增删改查反转等操作汇总以及5种排序算法(C语言)

    目录 1.准备工作 2.创建链表 3.打印链表 4.在元素后面插入元素 5.在元素前面增加元素 6.删除链表元素,要注意删除链表尾还是链表头 7.根据传入的数值查询链表 8.修改链表元素 9.求链表长 ...

随机推荐

  1. m_Orchestrate learning system---五、学的越多,做的越快

    m_Orchestrate learning system---五.学的越多,做的越快 一.总结 一句话总结: 1.上传的图像文件用input('post.')方法取不到是为什么? 图片不来就这样取不 ...

  2. CentOS7系统安装完MySQL后启动MySQL提示无服务

    重新安装MariaDB数据库即可解决,MySQL所有命令可通用 MariaDB MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,开发这个分支的原因之一是:甲骨文公司收购了My ...

  3. BZOJ 2096 单调队列

    思路: 偷懒用的STL //By SiriusRen #include <deque> #include <cstdio> using namespace std; struc ...

  4. win10+ubuntu的坑

    最近几天考虑了诸多,包括分区大小,使用烧写工具等等. 但是实际动手还是遇到了彩蛋.rufus是知乎的大神推荐的,因为UUI貌似有些版本安装时候有些问题. 而rufus的界面有诸多选项.ubuntu的图 ...

  5. JavaScript学习——使用JS完成省市二级联动

    1.我们希望在注册页面中添加一个字段(籍贯),当用户选择一个具体的省份,在后面的下拉列表中动态加载该省份下所有的城市.显示的效果如下: 2.步骤分析: 第一步:确定事件(onchange)并为其绑定一 ...

  6. sqluldr2linux64.bin的使用

    使用sqluldr2linux64.bin的前提是已经安装了Oracle数据库,sqluldr2linux64.bin和Oracle在同一台主机上使用,使用之前需要赋予可执行权限: [root@nod ...

  7. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  8. Webpack的作用(一个基础的打包编译工具在做什么?)

    结论: 转换ES6语法成ES5 处理模块加载依赖 生成一个可以在浏览器加载执行的 js 文件 第一个问题,转换语法,其实我们可以通过babel来做.核心步骤也就是: 通过babylon生成AST 通过 ...

  9. camke 参数

    cmake -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \   -DMYSQL_DATADIR=/application/mysql-5.5.32 ...

  10. 关于数组array_diff(array1, array2)求差集来比较数组是否相等的问题细究

    无意中发现很多朋友都喜欢使用array_diff(array1, array2)来判断两个数组是否相等, 我自己也偶尔会这么使用 但是今天我在写代码的过程中无意发现这么做是不准确的. 首先我们来看一下 ...