zoukankan      html  css  js  c++  java
  • 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]上的元素一定是已经有序的了。

     就先酱紫!!!

  • 相关阅读:
    CMSIS RTOS RTX License
    ssh无法登录linux服务器的解决办法
    蓝牙利用协议栈API读取设备MAC地址
    ARM Cortex-M3 MCU的I2C DMA操作和中断
    ARM RTX操作系统—Theory of Operation—System Resources & Scheduling Options
    ARM RTX操作系统—Theory of Operation—System Task Manager & Task Management
    ARM RTX操作系统—Theory of Operation—Timer Tick Interrupt
    ARM RTX操作系统—Overview—Advantages
    静态代理和动态代理
    异常未处理,该怎么处理?
  • 原文地址:https://www.cnblogs.com/wlgzszgb/p/10503017.html
Copyright © 2011-2022 走看看