使用lua语言--排序
来源:互联网 发布:vb key value 编辑:程序博客网 时间:2024/06/05 15:52
排序(Sort)
1.排序是将一段记录按照从大到小或者从小到大排列的排序,记录指的是要操作的数据元素。
2.要排序的那项 我们成为排序项,比如学生的c语言成绩,也可以成为关键码(keyword),关键码分为主关键码和次关键码。
3.主关键码,排序的序列唯一,次关键码表示序列是不唯一的,因为存在相同的元素,就有可能不唯一,还可以成为不稳定的。
排序的方法
1.直接插入排序
思路:有一个数是42的时候,我们遍历索引1-7的数,如果找到一个比42小的数,放在42的前面。第二轮17 首先20 17 42 , 第二次17 20 42 有点冒泡排序的意思。
table={2,5,1,4,7,3}for i=2,#table dolocal ivalue=table[i]local isInsert=false --isInsert=true 表示第一个位置插入好了for j=i-1,1,-1 do--如果存在一个i <j 的数才插入放在 j的前面if(table[j]>ivalue) then --此时还要把这个数放在j-1的位置table[j+1]=table[j]elsetable[j+1]=ivalue --不移动isInsert=truebreakendendif isInsert==false thentable[1]=ivalueendend
冒泡排序(Bubble Sort)
经常用到出现在各大排序中的方法,如果从小到大排序,第一轮 保证最大的数 冒到上面,明白交换几轮
table={2,5,1,4,3};for i=1,#table dofor j=1,#table-i doif(table[j]>=table[j+1]) thenlocal temp=table[j]table[j]=table[j+1]table[j+1]=tempendendend
简单选择排序(Simple Select Sort)
思路:第一个数是最小,第二数次小,第一轮方法是从后面的数找到比索引0位置小的数交换位置
table={2,5,1,4,7,3}for i=1,#table dolocal minNUm=table[i]for j=i+1,#table doif(table[j]<minNUm) thentable[i]=table[j]table[j]=minNUm--此时要更新一下minNumminNUm=table[i]endendend
快速排序
采用一种分治法,经常使用各大小的面试当中的方法。思路:
1.设置1个小兵i和一个小兵j,i从数组首部出发,j从尾部出发,每次走一步。i++,j++,j要比i先走。
2.设置基准数 最开始为索引0,即6.当i走到比6大的位置停下,j走到比6小的位置停下,然后交换位置
3.一次类推他们始终会碰上,此时将3和基准数6兑换,6左边都小于6,右边都大于6对吧。然后31254 和 9 710 8在排序
4.难点是对于 9 7 10 8这种9 为基准数,其实是9 7 8 10然后将 8设置成基点。
不知道如何用lua实现重载 ,用c#写一个 快速排序吧
static void QuickSort(int[] a, int left, int right) { int i, j, temp, swap; i = left; j = right; if (left > right) return; temp = a[left]; while (i != j) { while (a[j] >= temp && j > i) { j--; } while (a[i]<=temp&&j>i) { i++; } if (i < j) { swap = a[i]; a[i] = a[j]; a[j] = swap; } } a[left] = a[i]; a[i] = temp; QuickSort(a,left,i-1); QuickSort(a,i+1,right); }
阅读全文
0 0
- 使用lua语言--排序
- 使用vs2015编译lua语言
- 使用C语言扩展lua语言功能
- Lua语言在Wireshark中使用
- 使用lua语言实现循环链表
- 使用lua语言做高并发限流
- lua 排序
- lua 排序
- lua 排序
- lua 排序
- lua排序
- Lua语言写的几个简单排序(1)
- LUA语言
- lua 语言
- lua语言
- Lua 语言
- Lua语言
- LUA语言
- ssh远程启动weblogic提示BEA-090152错误(Demo trusted CA certificate is being used in production mode)
- EasyUI tabs选项卡切换触发不同的事件并绑定到table中
- MySQL中select * for update锁表的范围
- 移动端 一些注意事项
- ios入门:自适应屏幕旋转
- 使用lua语言--排序
- HTTP协议报文、工作原理及Java中的HTTP通信技术详解
- 微信端音频audio标签自动播放
- 蓝桥杯 算法训练 表达式计算(栈的应用)
- 【管理系统】Learning Records
- 解决pip安装的包无法在anaconda 的python 环境下使用的问题
- java基本数据类型
- jvm内存模型和内存分配
- Java程序员应该知道的10个调试技巧