冒泡排序的最坏情况是待排序序列逆序,第1趟比较n-1次,第2趟比较n-2次,依此类推,最后一趟比较1次,一共进行n-1趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+…+1,结果为n(n-1)/2。本题的正确答案是选项C。 知识模块:数据结构...
正确答案:C 解析: 冒泡排序的基本思想是对当前未排序的全部结点自上而下地依次进行比较和调整,让键值较大的结点下沉,键值较小的结点往上冒。也就是说,每当比较两个相邻结点后发现它们的排列与排序要求相反,就要将它们互换。对n个结点的线性表采用冒泡排序,冒泡排序的外循环最多执行n-1遍。第一遍最多执...
解析 C解析:在长度为n的线性表中,在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍从后往前的扫描,共需n(n-1)/2。 正确答案:C 解析:在长度为n的线性表中,在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍从后往前的扫描,共需n(n-1)/2。
A. n(n+1)/2 B. nlog2n C. n(n—1)/2 D. n/2 相关知识点: 试题来源: 解析 C 正确答案:C 解析:对n个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n一1)/2。 知识模块:数据结构与算法反馈...
A. 9 B. 10 C. 45 D. 90 相关知识点: 试题来源: 解析 C 正确答案:C 解析:冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,故选C选项。 知识模块:数据结构与算法反馈...
include<stdio.h>int main(){ int num=6,tep,sum=0; int a[6]= {2,1,10,8,7,6}; int i,j; printf("原数组:"); for(int p=0; p<num; p++) printf("%d ",a[p]); puts(""); for(i=0; i<num-1; i++) { for(j=0; j<num-i; ...
int main (){ int i,j,a[1000],n=0;for(i=0;i<1000;i++)a[i] = rand()%3000+1; //产生随机数(3000以内的)for(i=0;i<1000;i++){ for(j=i+1;j<1000;j++){ if(a[i]>a[j]) //交换 { int temp=a[i];a[i]=a[j];a[j]=temp;n++;} } if(i%15==0...
以下是C语言编写的带flag冒泡排序算法,并打印输出比较次数和交换次数的示例代码:cCopy code#include <stdio.h>void bubbleSort(int arr[], int n) { int i, j, temp, flag = 1; int cmpCount = 0, swapCount = 0; for (i = 0; i < n-1 && flag; i++) { flag = ...
对10个数据进行冒泡排序,需要比较的次数是( ) A. 90 B. 110 C. 45 D. 55 相关知识点: 试题来源: 解析 C 【详解】本题主要考查冒泡排序。通过嵌套for循环实现排序,外部循环需要9次,内部循环比较次数分别为9,8,7,6,5,4,3,2,1。故需要比较的次数是9+8+7+6+5+4+3+2+1=45次,故本题选C选项。
解析 1.一般的冒泡排序,都要比较n*n次,即使中途已经完成排序它也会继续下去,可以在程序中设置一个标志,如果一趟比较完成后,没有交换变量,那么就可以认为现在已经完成了排序,直接退出排序过程即可。 2.可以用stdlib.h中声明的malloc()/calloc()/realloc()进行动态分配。