为什么要进行冒泡排序?

作者&投稿:纳帖 (若有异议请与网页底部的电邮联系)
~

这是用了冒泡排序的知识点。

思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。

(1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。

(2)比较第2和第3个数,将小数 放在前面,大数放在后面。

......

(3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成。

(4)在上面一趟比较完成后,最后一个数一定是数组中最大的一个数,所以在比较第二趟的时候,最后一个数是不参加比较的。

(5)在第二趟比较完成后,倒数第二个数也一定是数组中倒数第二大数,所以在第三趟的比较中,最后两个数是不参与比较的。

(6)依次类推,每一趟比较次数减少依次。

扩展资料

算法分析:

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

(2)冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面。

第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量。

(3)时间复杂度

1、如果数据正序,只需要走一趟即可完成排序。所需的比较次数C和记录移动次数M均达到最小值,即:Cmin=n-1;Mmin=0;所以,冒泡排序最好的时间复杂度为O(n)。

2、如果很不幸数据是反序的,则需要进行n-1趟排序。每趟排序要进行n-i次比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。




为什么要进行冒泡排序?
(1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。(2)比较第2和第3个数,将小数 放在前面,大数放在后面。...(3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成。(4)在上面一趟比较完成后,最后一个数一定是数组中最大的...

冒泡排序
冒泡排序的英文Bubble Sort,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。冒泡排序是一种简单的排序算法,它也是一种稳定排序算法。其实现原理是重复扫描待排序序列,并比较每一对相邻的元素,当该对元素顺序不正确时进行交换。...

冒泡排序是什么?
冒泡排序,是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡排序算法运作原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对...

谁能讲一下冒泡排序原理?
冒泡排序算法的原理如下:1,比较相邻的元素。如果第一个比第二个大,就交换他们两个。2,对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3,针对所有的元素重复以上的步骤,除了最后一个。4,持续每次对越来越少的元素重复上面的步骤,直到...

用java冒泡排序和递归算法
冒泡排序 (1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2)用java实现 ubli cclass bubbleSort { public ...

简单写一下冒泡排序算法
即:Cmin=n-1;Mmin=0;冒泡排序最好的时间复杂度为O(n)。如果我们的数据是反序的,则需要进行n-1趟排序。每趟排序要进行n-i次比较(1sin-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:冒泡排序总的平均时间复杂度为:0(n^2)。

C语言冒泡排序不太理解
每趟排序要进行n-i次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值: Cmax=n(n-1)\/2=O(n2) Mmax=3n(n-1)\/2=O(n2) 冒泡排序的最坏时间复杂度为O(n2)。(3)算法的平均时间复杂度为O(n2) 虽然冒泡排序不一定...

冒泡排序算法有几种写法?
冒泡排序算法有两种,一种是从大到小排,另一种是从小到大排。冒泡排序依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。冒泡排序最核心的思想就是相邻的两个元素相比较...

java中冒泡排序算法的详细解答以及程序?
冒泡排序算法 因为每一趟排序都使有序区增加了一个气泡,在经过 n-1 趟排序之后,有序区中就有 n-1 个气泡,而无序区中气泡的重量总是大于等于有序区中气泡的重量,所以整个冒泡排序过程至多需要进行 n-1 趟排序。 若在某一趟排序中未发现气泡位置的交换,则说明待排序的无序区中所有气泡均满足...

能详细的告诉我 VB 里冒泡排序法么?最好要有个详细的举例。
冒泡排序法的过程为:对于数组的n个元素,从第1个起,每个与其下一个作比较,如果下一个的值小,就交换着两项的值。直到倒数第2个与最后一个比较完之后,数组中的最大数(或最小数)就被放到了最后一个位置(或第一个位置),然后对浮上来(或者浮下去)的这一部分进行同样的操作,直到浮上来(...

北碚区15195851779: 冒泡排序(计算机排序算法) - 搜狗百科
茹新强力: 冒泡排序,是指计算机的一种排序方法,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序...

北碚区15195851779: 冒泡法怎么回事?
茹新强力: 冒 泡 法: 目的:按要求从大到小或从小到大排序. 基本思路:对尚未排序的各元素从头到尾依次依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后...

北碚区15195851779: 冒泡法排序是怎么回事 -
茹新强力: 5 4 3 2 1 比如上面这5个数字我们把它按照由小到大的顺序排列,从前往后相临两位比较大小,如果前一位比后一位大就把它俩 换位,5比4大就把5和4换位,得到45321 5又比3大 5和3换位 得到43521 依次类推最后得到43215 这样就把最大的一...

北碚区15195851779: 冒泡排序法是这样理解的吗? -
茹新强力: 说实话你的理解我不是很理解!我来说说冒泡的原理吧! 正如其名冒泡是将最大或者最小的元素逐步冒出来(排到最后)! 每次循环它都从最开始用相邻两个逐步比较最小或最大的放到后面来!这样每次就能将一个当前除上次冒出得那个元素...

北碚区15195851779: 冒泡排序是什么? -
茹新强力: 冒泡排序,是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 冒泡排序算法运作原理: 1. 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3. 针对所有的元素重复以上的步骤,除了最后一个. 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较.

北碚区15195851779: 怎么解释冒泡排序? -
茹新强力: 若有n个数字,从第一个与后边的开始比较,大的放后边.一直比较到最后一个数,那么最后就是最大的.剩余n-1个数再次这样比较,直到n个循环.数列就是从小到大了.

北碚区15195851779: 冒泡排序为什么要定义i,j两个变量.i是控制排序趟数的话 为什么要控制排序趟数 -
茹新强力: 因为冒泡排序的每一趟排序是将最大(最小)的数挪到最前(最后),因此如有N个数据,则要进行N-1趟排序,才能将数据排列好.

北碚区15195851779: 冒泡排序有什么应用?
茹新强力: 冒泡排序的时间复杂度是O(n*n),应该算是所有排序算法中最慢的,不过是最简单易懂也是最稳定的,我个人通常用快速排序,虽然说它的稳定性差,但是目前为止还真没遇见过快速排序莫名其妙的崩溃事件. 提供一个实验数据,P8700 CPU 2.53GHz,指定长度double数组,最坏情况下(数据从大到小排列)进行冒泡排序和快速排序耗时: 数组长度 冒泡排序(毫秒) 快速排序(毫秒)196 <1 <1197 15 <11000 125 <1 10000 12870 15 30000 117999 47

北碚区15195851779: 什么叫冒泡排序法
茹新强力: 简单通俗的说,假如要将n个数从大到小排列,那就将第一个数和后面的每一个数比较,每次比较后把大的赋给第一个数;然后再拿第二个数和后面的每个数比较,每次比较后把大的赋给第二个数;再按规律继续比较.比较的次数也就是(n-1)+(n-2)+(n-3)...+(1).

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网