zoukankan      html  css  js  c++  java
  • JAVA-初步认识-第五章-数组-常见操作-排序的性能问题

    一.

    这里对前面的选择排序操作进行了深化,之前讨论的选择排序是将0角标上的数据和后面角标的数据一个个进行对比,不断地调换数据的位置,直到0角标上的数据是整个数组中的最小值。由于调换的次数较多,现在引发一个疑问,能不能直接将0角标的数据和最小数据进行对换(前提是知道最小数据的角标是多少)。

    之前的例子里,选择排序中,进行了三次比较调换数据,才使得角标0上的数据是最小的。现在要换个思路来解决相同的问题。

    具体的操作是:先定义两个变量,为什么要定义两个变量?一个变量记录用于比较的元素num,一个变量记录角标值。

    思考:通过视频讲解,这里是开辟了两个新的变量作为记录的地方,然后在这两个变量上进行操作,比较的过程中,不对数组进行任何操作。经过所有的比较后,两个变量记录的是最小值和最小值的角标。最后,直接将数组中的,0角标的数据和4角标的数据进行数据交换。这个思路相较于之前的解题来说,进行了一个前期的铺垫。其实,我觉着这个思路的过程中,操作也挺多的。增加了比较记录的次数,减少了交换的次数。那两个变量是存储在栈内存中的。

     如果改变调换语句,结果如下

    注解:多条语句写在一行的书写格式不清楚。同时定义多个变量时,变量之间可以采用逗号隔开,但是不同的表达式在一行连用时,就不能用逗号隔开。

    视频的解题中,还比我们多了一步就是判断是否0角标的数据就是最小值,要进行检查。

    注解:这种思路相比较之前的选择排序,调换位置上的数据次数是减少了。效率会比之前的选择排序效率高一些,为什么?下面将每一步的思路都改成了现在谈论的定义两个变量的思路。

    这里选择排序中的两种思路,第一种思路是在一轮中,进行了多次调换位置;第二种思路是在一轮中,用了两个变量标记,进行了一次调换位置。在数据数目很多的情况下,第二种思路的效率要比第一种高的多。

  • 相关阅读:
    java命名规范:注重细节
    撒旦法撒旦法三阿斯顿发暗室逢灯
    369绿色浏览器开发记录
    时间过得好快
    C++进程间通信(常用理解例子)-买票
    MFC常用 控制对话框透明属性函数
    DedeCms 建站随笔(一)
    个人作业收官——软件工程实践总结
    第三次作业——个人作业——软件产品案例分析
    UML用例图
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7616376.html
Copyright © 2011-2022 走看看