• 3.9个人总结


    这周听了小组成员讲Java中的冒泡排序、选择排序和插入排序,记得以前是会了的,可听人家讲的时候又有点懵逼,还是自己再整理一遍吧,毕竟是基础,以后的算法题不知道比这难上几倍,废话不多说,开始:(都是从小到大排的哈)

    1、  冒泡排序:

    原理:

    比较两个相邻的元素,将数值较大的元素交换至右端

    算法描述:
    比较相邻的元素。如果第一个比第二个大,就交换它们两个;

    对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

    针对所有的元素重复以上的步骤,除了最后一个,直到排序完成。

    *N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数    

    2、选择排序:

    原理:
    每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。
    也就是:每一趟在n-i+1(i=1,2…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录

    算法描述:

    初始状态:无序区为R[1..n], 有序区为空:

    第i趟排序(i=1,2, 3…n-1)开始时,当前有序区和无序区分别为R[1.. i-1]和R(i..n)。该趟排序从当前无序区中-选出关键字最小的记录R[k], 将它与无序区的第1个记录R交换,使R[1..i]和R[i+1.. n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区:

    n-1趟结束,数组有序化了。

    *每一趟排序获得最小数的方法:for循环进行比较,定义一个第三个变量temp,首先前两个数比较,把较小的数放在temp中,然后用temp再去跟剩下的数据比较,如果出现比temp小的数据,就用它代替temp中原有的数据。

    3、插入排序:

    原理:
    利用插入法对无序数组排序时,我们其实是将数组R划分成两个子区间R[1…i-1] (已排好序的有序区) 和R[i…n] (当前未排序的部分,可称无序区)

    算法描述:

    1)  从第一个元素开始,该元素可以认为已经被排序;

    2)  取出下一个元素,在已经排序的元素序列中从后向前扫描:

    3)如果该元素(已排序)大于新元素,将该元素移到下一位置;

    4)重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;

    5)将新元素插入到该位置后:

    重复步骤2~5。

    *第N-1趟对下标 N-1 处的元素进行排序,保证数组[0,N-1]上的元素有序,也就是整个数组有序了。

    它的递归思想就体现在:当对位置 i 处的元素进行排序时,[0,i-1]上的元素一定是已经有序的了。

     就先酱紫!!!

  • 相关阅读:
    Visual Studio插件CodeRush全新发布v20.1.5|支持运行设置文件
    DevExpress Data Access v20.1新版亮点:XPO
    VCL界面工具——DevExpress VCL v20.1.3全新发布
    你想要的WinForm界面开发教程在这里
    WPF界面开发技巧你知多少?Data Editors如何实现多选?
    Web开发实用技能,看Kendo UI for jQuery如何导出Excel(一)
    DevExpress XAF框架2020新改变!一篇文章带你看完
    Winforms界面开发新技能——Data Grid
    一招教你如何在WPF界面开发时自定义外观,快来Get!
    完整的jQuery UI组件库:Kendo UI for jQuery发布R2 2020 SP1
  • 原文地址:https://www.cnblogs.com/wlgzszgb/p/10503017.html
Copyright © 2020-2023  润新知