【算法】冒泡排序的优化

for i=1,10 do
  //基准值下标
   local min = i;
   for j=i+1,10 do
    if table[min] > table[j] then
         //基准值下标交换
           min = j
       end
   end
   //基准值交换
   if min ~= i then
    local num  = table[min]
    table[min] = table[i]
    table[i] = num
  end
end

省去了冒泡排序的多次交换值,用标记的方式,来提高效率。

MT.Team

时间: 2024-10-06 13:33:02

【算法】冒泡排序的优化的相关文章

排序算法—冒泡排序

*/--> 排序算法-冒泡排序 Table of Contents 1 问题描述 2 冒泡排序(Bubble) 2.1 冒泡排序(一) 2.2 冒泡排序(二) 2.3 冒泡排序(三) 2.4 冒泡排序(四) 3 阅读参考 1 问题描述 引子 排序是数据结构中十分重要的一章,排序算法有很多种,一直没时间整理而且很多排序算法理解的也不是很透彻.希望通过这次整理吃透吧! 排序算法十分多,故分篇进行整理. 说明 本文重点是理解排序算法,而不是完整的程序,所以每节都只有具体排序算法的接口.没有完整的源代码

冒泡排序以及冒泡排序的优化

说明:很简答的优化,却有很多人容易在面试时候栽在这个简单的问题上. “冒泡排序”在面试中是很容易被问到的排序算法,也是最简单的排序算法,当被问到,“冒泡排序怎么优化?”,很多人就懵了,冒泡还能优化?答案是可以的. 1. 这是一般的冒泡排序. 1 /// <summary> 2 /// 通俗冒泡 3 /// </summary> 4 public static void BubbleSortCommon(int[] arr) 5 { 6 int temp; 7 int len = a

排序算法-冒泡排序(改),选择排序

上次说冒泡排序留下2个问题,一个是选择排序,一个是冒泡排序性能,这次会先说选择排序,然后说冒泡排序的优化 一选择排序 选择排序是一种简单直观的排序算法.它的工作原理是每一次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 流程: (有小到大排序) 第一轮 将0位元素与后续所有元素比较,将小的元素放在0位 第二轮 将1位元素与后续所有元素比较,将小的元素放在1位 ... 直到最后一位 代码上次已经贴出,这里复制下 1 public static vo

好程序员Java学习路线分享冒泡排序及优化

? 好程序员Java学习路线分享冒泡排序及优化,冒泡排序是一定典型的交换排序,如排序规则是升序,有如下数列: ? A[0] A[1] A[2] A[3] ...... A[n] ? 将A[0]和A[1]比较,如果A[0]>A[1] ,则交换两个元素的位置,否则不变, 再继续比较A[1]和A[2],直到A[n-1]和A[n].即比较相邻的两个元素,如果前一个大,就交换(否则不交换),再继续比较后面的元素,每一轮比较之后,最大的元素会移动到最后(完成一轮冒泡):再开始第二轮冒泡,本次会选出第二大的元

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

高斯模糊算法的全面优化过程分享(二)。

      相关链接: 高斯模糊算法的全面优化过程分享(一) 在高斯模糊算法的全面优化过程分享(一)一文中我们已经给出了一种相当高性能的高斯模糊过程,但是优化没有终点,经过上一个星期的发愤图强和测试,对该算法的效率提升又有了一个新的高度,这里把优化过程中的一些心得和收获用文字的形式记录下来. 第一个尝试   直接使用内联汇编替代intrinsics代码(无效) 我在某篇博客里看到说intrinsics语法虽然简化了SSE编程的难度,但是他无法直接控制XMM0-XMM7寄存器,很多指令中间都会用内

冒泡排序的优化

//冒泡排序的优化          int array10[] = {9, 7, 3, 8, 4};     BOOL flag1 = YES;     for (int i = 0; i < 5 - 1 && flag1; i++) {         flag = NO;//假设本趟循环没有做交换         for (int j = 0; j < 5 - 1 - i; j++) {             if (array10[j] > array10[j

公交车路线查询系统后台数据库设计--换乘算法改进与优化

在<查询算法>一文中已经实现了换乘算法,但是,使用存储过程InquiryT2查询从“东圃镇”到“车陂路口”的乘车路线时,发现居然用了5分钟才查找出结果,这样的效率显然不适合实际应用.因此,有必要对原有的换乘算法进行优化和改进.在本文中,将给出一种改进的换乘算法,相比原有的算法,改进后的算法功能更强,效率更优. 1. “压缩”RouteT0 假设RouteT0有以下几行 如下图所示,当查询S1到S4的二次换乘路线时,将会产生3×2×4=24个结果 从图中可以看出,第1段路线中的3条线路的起点和站

排序之冒泡排序(优化)-PHP

1 <?php 2 //设置请求头 3 header("content-type:text/html;charset=utf-8"); 4 5 //对冒泡排序进行优化:如果数组在传进来或者遍历一次两次后 6 //就已经排好了 就不再进行排序操作 7 8 //例子: 9 $arr = array(1,2,3,6,4,12,1,85,1,3); //待排序数组 10 // $arr = range(1, 10000); 11 12 function my_bubble_sort(&a

啊哈算法-冒泡排序

下面介绍的是啊哈算法的冒泡排序算法: #include <stdio.h> int main() { int a[100], i, j, t, n; scanf("%d", &n); for (i = 1; i <= n; i++) scanf("%d", &a[i]); for (i=1; i<= n-1; i++) { for (j=1; j<=n-i; j++) { if (a[j] < a[j+1]) {