冒泡法排序 你的名字 2022-08-04 01:59 227阅读 0赞 冒泡法排序是一种比较简单的排序算法,但同时它也是一种效率比较低的排序算法。 当要将元素进行单调非减排序时,冒泡法排序的基本过程为: ![Center][] 其基本思想是每一趟排序就将需要排序的序列的最大值像泡泡一样“冒”到排序的最上面,而下趟排序时就将需要排序的序列长度减1. 算法比较简单,下面给出一个最直观的实现: void bubble_sort1(int arr[],int len) { int temp; for (int i = 0; i < len; i++) { for (int j = 0; j < len-1-i; j++) { if (arr[j + 1] < arr[j]) { temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } } 代码中输入分别为数组首地址和数组长度,代码中利用两个for循环来实现冒泡法排序,外层for来控制循环的次数,内层for每一次将需要排序的序列中的最大的数“冒”到需要排序的序列最前面。 下面还有另一种冒泡排序的实现,从算法分析的角度来看,它们的运行时间都是O(n^2),但就平均情况而言,下面的实现会更好,同时也更加合理。 想象一下这个特殊的情形,如果上面程序的输入是一个已经排好序的数组,如\{1,2,3,4,5\},上面的程序无法判断这种已经排好序的情况,它每次都傻傻地去比较,然后将最大的数“冒”到最上面,无论给出的序列情况如何。 下面是第二种冒泡排序的实现: void bubble_sort2(int arr[], int len) { int temp,last_i, end=len-1; while (end>0) { last_i = 0; for (int j = 0; j < end; j++) { if (arr[j + 1] < arr[j]) { temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; last_i = j;//记录最后一个需要交换的关键码的下标,下一次重排的长度为从起始下标到这里(last_i) } } end = last_i;//如果这次循环没有交换,则数组已经有序了 } } 第二个实现利用end变量来检测数组是否已经有序,这会在每一趟排序结束后进行检测,如果已经有序,程序就退出,否则继续下一趟排序。检测数组已经有序的原理是使end变量的值为最近一次发生元素交换的元素的下标,初始时end的值为数组首元素的下标。只要end的值为数组首元素的下标,说明这趟排序并没有什么进行交换,也就说明整个数组都已经有序了,while退出,整个函数结束。 [Center]: /images/20220731/9e88edaf511047538a7b34c8bb8a5bea.png
相关 冒泡排序法 冒泡排序法 1. 算法步骤 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元 爱被打了一巴掌/ 2022年10月14日 14:56/ 0 赞/ 220 阅读
相关 冒泡排序法 package com.wdl.day07; import java.util.Arrays; / @创建人 wdl @创建时间 r囧r小猫/ 2022年09月04日 01:45/ 0 赞/ 255 阅读
相关 冒泡排序法 2.请写出常见的排序算法,并用PHP实现冒泡排序,将数组$a = array()按照从小到大的方式进行排序。 常见的排序算法:冒泡排序法、快速排序法、简单选择排序法、堆排序法 秒速五厘米/ 2022年08月21日 06:48/ 0 赞/ 226 阅读
相关 冒泡法排序 冒泡法排序是一种比较简单的排序算法,但同时它也是一种效率比较低的排序算法。 当要将元素进行单调非减排序时,冒泡法排序的基本过程为: ![Center][] 其基本思 你的名字/ 2022年08月04日 01:59/ 0 赞/ 228 阅读
相关 冒泡排序法 冒泡排序法 \ 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。 \ 比如:2,4,1 // 第一次 冒出的泡是4 \ 2,1,4 // 第 爱被打了一巴掌/ 2022年07月13日 07:16/ 0 赞/ 215 阅读
相关 冒泡排序法 /冒泡排序法/ include<stdio.h> include<time.h> define N 10 main() { 电玩女神/ 2022年06月14日 08:57/ 0 赞/ 289 阅读
相关 冒泡排序法 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</ 红太狼/ 2022年05月20日 02:59/ 0 赞/ 302 阅读
相关 冒泡排序法 根据冒泡排序法将数组中的数从大到小排列 第一次代码: include<stdio.h> include<stdlib.h> / 冒泡排序法 / 亦凉/ 2022年04月15日 00:56/ 0 赞/ 280 阅读
相关 冒泡排序法 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25pbmlv 小鱼儿/ 2021年11月02日 14:50/ 0 赞/ 388 阅读
还没有评论,来说两句吧...