冒泡排序法 什么是冒泡排序法?

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

#include<stdio.h> 

void main() 

int a[10]; 

int i,j,t; 

printf("input 10 numbers:
"); 

for(i=0;i<10;i++) 

scanf("%d",&a[i]);

for(j=0;j<9;j++) /*进行9次循环 实现9趟比较*/ 

for(i=0;i<9-j;i++) /*在每一趟中进行9-j次比较*/ 

if(a[i]>a[i+1]) /*相邻两个数比较,想降序只要改成a[i]<a[i+1]*/ 

t=a[i]; 

a[i]=a[i+1]; 

a[i+1]=t; 

printf("the sorted numbers:
"); 

for(i=0;i<10;i++) 

printf(" %d",a[i]);


}

扩展资料:

冒泡排序算法的运作

1、比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。

3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。

4、持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。

简单的表示

#include <stdio.h>

void swap(int *i, int *j)

{

int temp = *i;

*i = *j;

*j = temp;

}

int main()

{

int a[10] = {2,1,4,5,6,9,7,8,7,7};

int i,j;

for (i = 0; i < 10; i++)

{

for (j = 9; j > i; j--)//从后往前冒泡

{

if (a[j] < a[j-1])

{

swap(&a[j], &a[j-1]);

}

}

}

for (i = 0; i < 10; i++)

{

printf("%d
", a[i]);

}

return 0;

}

参考资料来源:冒泡排序-百度百科



用冒泡排序法对n个关键码排序,在最好的情况下也就是数据按关键码排序次序有序,只需要依次从头到尾挨个比较就可以了,因此比较次数为n-1次,关键码不移动,所以0次移动
在最坏的情况下为关键码按排序顺序完全逆序,第k趟都有n-k个关键码比较,
因此数据一共要做n*(n-1)/2次比较,移动次数则为3n*(n-1)/2

这样就是错误A



起泡排序法的基本思想是:对于一个待排序的序列(假设按升序排序),从左向右依次比较相邻的两个数,如果左边的数大,则交换两个数以使右边的数大。这样比较、交换到最后,数列的最后一个数则是最大的。然后在对剩余的序列进行相同的操作。这个操作过程被称为一次起泡。
一次起泡的操作只能使数列的最右端的数成为最大者。对于10个数而言,需要9次这样的起泡过程。

什么是冒泡排序算法~

经典排序之冒泡排序

经典排序之冒泡排序

简述各种排序算法的优缺点
答:二、选择排序 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数 据元素排完。选择排序是不稳定的排序方法。n 个记录的文件的直接选择排序可经过n-1 趟直接选择排序得到有序结果:①初始状态:无序区为R[1..n],有序区为空。②第1...

八大经典排序算法原理及实现
答:归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。快速排序在应该是大家经常看到、听到的算法,但是真正默写出来是有难度的。希望大家看了下面 挖坑填数 方法后,能快速写出、快速排序。其原理就这么几句话,但是现实起来并不是这么简单,...

稳定的排序算法有哪些
答:稳定的排序算法:冒泡排序、插入排序、归并排序、基数排序、计数排序。1、冒泡排序:冒泡排序是一种基本的比较排序算法,它通过多次遍历数据来将较大的元素逐渐“冒泡”到数组的末尾。冒泡排序是稳定的,但在大型数据集上性能较差。2、插入排序:插入排序是一种简单的排序算法,它逐个将元素插入已排序的部分...

基于比较的排序算法
答:基于比较的排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序。1、冒泡排序 冒泡排序是一种简单的排序算法,它重复地遍历待排序的元素,比较相邻的两个元素,如果它们的顺序错误,就交换它们的位置。这个过程会一直重复,直到没有需要交换的元素为止。冒泡排序的时间复杂度为O(n^2)...

C语言用冒泡法和选择法对10个数进行排序
答:选择法排序原理:一次选定数组中的每一个数,记下当前位置并假设它是从当前位置开始后面数中的最小数min=i,从这个数的下一个数开始扫描直到最后一个数,并记录下最小数的位置min,扫描结束后如果min不等于i,说明假设错误,则交换min与i位置上数。 具体实现代码如下:include<stdio.h> / 选择排序...

...设计一个函数模板,实现用冒泡法对10 个某类型数据按升序排序...
答:冒泡排序算法的运作如下:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4、持续每次对越来越少的元素重复上面的步骤,直到...

选择排序,快速排序,冒泡排序,堆排序,插入排序,基排序的程序的运行速度...
答:即每次划分子串时,一串为空,另一串为m-1(程序中的100K正序和逆序就正是这样,如果程序中采用每次取序列中部数据作为划分点,那将在正序和逆时达到最优)。从100K中正序的结果上看“快速排序”会比“冒泡排序”更慢,这主要是“冒泡排序”中采用了提前结束排序的方法。有的书上这解释“快速排序”...

Java实现几种常见排序方法
答:最主要的是冒泡排序、选择排序、插入排序以及快速排序 1、冒泡排序 冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下排序速度较快。若要排序的数有n个,则需要n-1轮排序,第j轮排序中,从第一个数开始,相邻两数比较,若不符合所要求的顺序,则交换两者的位置;直到第n+1-j个数...

C语言里冒泡排序和选择排序哪个效率高
答:通过上面的实例应该知道,选择排序是每一个都比较(绝对比较);而冒泡法是相对的比较,它是相对之前的数比较;如果有一组排好序的数组 [1,2,3,4,5,6] 再用选择排序法和冒泡法,那肯定是冒泡法先执行完,因为冒泡法只要执行一趟(运用相对比较),而选择要执行五趟(用的是绝对比较);...

排序方法有哪几种 排序方法的相关知识
答:1、排序方法有10种,分别是:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序。2、冒泡排序算法是把较小的元素往前调或者把较大的元素往后调。这种方法主要是通过对相邻两个元素进行大小的比较,根据比较结果和算法规则对该二元素的位置进行交换,这样逐个...