美文网首页让前端飞
Java冒泡排序,快速排序理解与实现

Java冒泡排序,快速排序理解与实现

作者: Beauty_Beast | 来源:发表于2018-11-30 23:32 被阅读0次

经典排序算法中,有好几种排序,下边说下冒泡排序和快速排序的理解与实现,记太多容易混乱;

1.冒泡排序:字面理解,值大的数字一层一层比较往最上边排,就像水里的气泡一样,从水底某个位置,往上冒;

思想:

第一次:从数组的最左边开始,取第一个元素与第二个元素比较,小的往前边放,大的往后边放;然后取,第二个元素与第三个元素比较, 大的往第三的位置放,小的放在第二位置,,然后取第三元素与第四元素比较,,第四与第五,,,,,,,总共比较n-1次,最大元素出现在最右边,第一次结束;

第二次:从数组的最左边开始,取第一个元素与第二个元素比较,小的往前边放,大的往后边放;然后取,第二个元素与第三个元素比较, 大的往第三的位置放,小的放在第二位置,,然后取第三元素与第四元素比较,,第四与第五,,,,,,,总共比较n-2次,第二个大元素出现在倒数第二个位置,第二次结束;

第三次,第四次,,,,,以此类推,总共比较比较n-1次(以上n均为数组长度)

冒泡排序的时间复杂度:O(n^2)

冒泡排序实现 测试

2.快速排序

思想:第一次:取数组的第一个元素a[0],作为标值key(此时相当于a[0]放入key中,a[0]位置为空),所以从数组的最右边开始,分别与key值比较,如果比key值大,那么放在右边不动 ,,一直比较,知道遇到比key值小的,放在a[0]位置,此时右边空出一个位置,然后,从左边开始分别与key值比较,比key小的在左边不变,遇到比key值大的,放到刚才右边空出的位置,接着从刚放在右边的位置的前边开始, 分别与key值比较,比key大的不动,比key小的放在左边空下的位置,,,,,如此往复,直到,左右两边相遇停止比较,在相遇的位置把key值(也就是a[0])放进去.此时左边的全是比a[0]小的值,右边的全是比a[0]大的值,相当于用a[0]把数组分成[left,n-1],[n+1,right]两个数组,n位置为存放a[0]值,也就是key的值,第一次比较过程结束

第二次:对上次分割成的两个数组,[left,n-1]和[n+1,right],分别取第一个位置的值做第一次比较的过程;

第三次:第二次结束又会把两个数组分割成四个数组,分别取第一个位置的值做第一次比较的过程;直到每个数组的长度为1,停止,此时每个数组都保证了,右边大于左边,那么大数组肯定是有序的,就拍好序了;

快速排序实现 测试

快速排序的思想有点绕,要理解的话,还是要多动脑经想想,如果理解了就觉得很简单了。

相关文章

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • Java冒泡排序,快速排序理解与实现

    经典排序算法中,有好几种排序,下边说下冒泡排序和快速排序的理解与实现,记太多容易混乱; 1.冒泡排序:字面理解,值...

  • 常见排序的java实现

    常见排序的java实现 常见排序java实现 插入排序(二分插入排序) 希尔排序 快速排序(三数中值快排) 冒泡排...

  • 常用排序算法的Java实现

    冒泡、插入、选择、归并、快速排序的Java实现

  • 面试知识点

    排序冒泡排序快速排序选择排序插入排序二路归并 查找二分查找 排序和查找的java实现 java语言Java字符串字...

  • 排序算法Java实现

    本文会通过Java语言实现:冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序,希尔排序...

  • 实现几种常见排序方法

    Java实现几种常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还...

  • 冒泡排序 选择排序

    冒泡排序 java 实现 C 实现 选择排序 java 实现 C 实现

  • Datawhale | 编程第6期 Test 3

    排序 1.实现归并排序、快速排序、插入排序、冒泡排序、选择排序、堆排序(选做) 归并排序 快速排序 插入排序 冒泡...

  • 十大经典排序算法(java实现)

    前言 本文我们将以java代码实现十大经典排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序...

网友评论

    本文标题:Java冒泡排序,快速排序理解与实现

    本文链接:https://www.haomeiwen.com/subject/ewmkcqtx.html