zoukankan      html  css  js  c++  java
  • 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结

      Java排序一,冒泡排序!

     刚刚开始学习Java,但是比较有兴趣研究算法。最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴趣,就记录一下自己的学习总结!

    排序:将一些无序的元素按照某种规则排列的过程就叫“排序”。在生活中,有时候可能是一些少量的数据 ,,,但是 ,也有可能是 一些的大数据 。排序是非常基础和重要的算法,有着广泛的理论基础和实践需求。(加粗部分摘自《算法笔记》原话!:-D)

    一个排序算法,有3个方面去衡量优劣:

    1,时间复杂度

    2,空间复杂度

    3,稳定性

    一:冒泡排序

          冒泡排序是我们大多数同学接触的第一个排序算法,它虽然在时间上不占优势,但是代码十分简洁,逻辑很清晰,实现难度低!

      基本思想:首先将第一个元素(下标为0)和第二个元素(下标为1)进行比较,若为逆序,则将两个元素进行一次交换,然后比较第二个元素和第三个元素。依次类推,直至第n-1个元素和第n个元素进行过比较为止。上述过程称为第一趟冒泡排序,其结果使得最大的那个元素被放到最后一个位置上(沉下去了)。然后进行第二趟冒泡排序,对前n-1个元素进行同样操作,其结果是使元素次大的被放到第n-1个位置上。意思就是,第i趟冒泡排序是从1个元素到第n-i+1个元素依次比较进行比较(也就是下标为0的元素到下标为ary.length-i,写作表达式即为for(int i=0;i<ary.length-i-1;i++)),并在“逆序”时交换相邻记录,最终达到将大的值沉下去,小的值冒上来!

    比如:定义一个整型数组   int  [] int intarray=new int []{5,66,8,9,100,0,225,1};

    分析过程:

    Java实现代码如下:

     到此,Java中的冒泡排序算写完了,还有老师留下一个问题就是冒泡排序外层循环M次,内层循环N次,则共比较的多少次(不包括交换)?

    我的观点是:假设总共有8个元素,则M=8;则N=7,6,5,4,3,2。

    ,1。所有就总共有MN/2次的比较。

     

  • 相关阅读:
    rails 给类添加属性
    workflow engine Ruote初体验之二(通用属性)
    workflow engine Ruote初体验之一(概念)
    workflow engine Ruote 安装
    文字编码
    C# 制作Windows服务安装包
    Ruby on rails初体验(三)
    18-语言入门-18-鸡兔同笼
    17-语言入门-17-笨小熊
    16-语言入门-16-谁获得了最高奖学金
  • 原文地址:https://www.cnblogs.com/Lsong/p/6486551.html
Copyright © 2011-2022 走看看