冒泡排序法 什么是冒泡排序法?
#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、冒泡排序算法是把较小的元素往前调或者把较大的元素往后调。这种方法主要是通过对相邻两个元素进行大小的比较,根据比较结果和算法规则对该二元素的位置进行交换,这样逐个...