更多"下面排序算法中,平均排序速度最快的是( )"的相关试题:
[单项选择]下面排序算法中,平均排序速度最快的是( )
A. 冒泡排序法
B. 选择排序法
C. 交换排序法
D. 堆排序法
[单项选择]
以关键字比较为基础的排序算法在最坏情况下的计算时间下界为O(nlogn)。下面的排序算法中,最坏情况下计算时间可以达到O(nlogn)的是 (59) ;该算法采用的设计方法是 (60) 。
(59)处填()。
A. 归并排序
B. 插入排序
C. 选择排序
D. 冒泡排序
[简答题]下面程序实现插入排序算法。typedef struct{ int key; Info otherinfo;}SeqList;void InsertSort(SeqList R[],int n){/* 待排序列保存在R[1..n]中*/ SeqList x; int i,j,k,lo,hi,mi; for (i=2;i<=n;i++) { (1) ; lo=1; hi=i-l; while (lo<=hi) { mi=(lo+hi)/2; if ( (2) ) break; if (R[mi].key>x.key) hi=mi-l; else lo=mi+l; } if (mi=lo) k=i - mi; else k=i - mi-1; for (j=0;j (3) ; R[i-j]=x; }}在空白处填写适当的内容,使该程序功能完整。(1)(2)(3)
[填空题]下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。 (注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main( )
char*str="ABCDabcd",temp;
int n,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
temp=______;
str[i]=str[i+1];
______=temp;
printf(______);
[填空题]下面的程序可对指定字符串中的字符串进行从大到小排序、请将程序填完整。 (注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main( )
char*str="ABCDabcd",temp;
int n,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++
if(str[i]<str[i+1])
temp= 【17】 ;
str[i]=str[i+1];
【18】 =temp;
printf( 【19】 );
[单项选择]血流速度最快
A. 腔静脉
B. 主动脉
C. 微动脉
D. 毛细血管
[简答题]
阅读下列函数说明和C代码,回答下面问题。
[说明]
冒泡排序算法的基本思想是:对于无序序列(假设扫描方向为从前向后,进行升序排列),两两比较相邻数据,若反序则交换,直到没有反序为止。一般情况下,整个冒泡排序需要进行众(1≤k≤n)趟冒泡操作,冒泡排序的结束条件是在某一趟排序过程中没有进行数据交换。若数据初态为正序时,只需1趟扫描,而数据初态为反序时,需进行n-1趟扫描。在冒泡排序中,一趟扫描有可能无数据交换,也有可能有一次或多次数据交换,在传统的冒泡排序算法及近年的一些改进的算法中[2,3],只记录一趟扫描有无数据交换的信息,对数据交换发生的位置信息则不予处理。为了充分利用这一信息,可以在一趟全局扫描中,对每一反序数据对进行局部冒泡排序处理,称之为局部冒泡排序。
局部冒泡排序的基本思想是:对于N个待排序数据组成的序列,在一趟从前向后扫描待排数据序列时,两两比较相邻数据,若反序则对后一个数据作一趟前向的局部冒泡排序,即用冒泡的排序方法把反序对的后一个数据向前排到适合的位置。扫描第—对数据对,若反序,对第2个数据向前冒泡,使前两个数据成为,有序序列;扫描第二对数据对,若反序,对第3个数据向前冒泡,使得前3个数据变成有序序列;……;扫描第i对数据对时,其前i个数据已成有序序列,若第i对数据对反序,则对第i+1个数据向前冒泡,使前i+1个数据成有序序列;……;依次类推,直至处理完第n-1对数据对。当扫描完第n-1对数据对后,N个待排序数据已成了有序序列,此时排序算法结束。该算法只对待排序列作局部的冒泡处理,局部冒泡算法的
名称由此得来。
以下为C语言设计的实现局部冒泡排序策略的算法,根据说明及算法代码回答问题1和问题2。
[变量说明]
#define N=100 //排序的数据量
typedef struct{ //排序结点
int key;
info datatype;
......
}node;
node SortData[N];
//待排序的数据组
node类型为待排序的记录(或称结点)。数组SortData[]为待排序记录的
[多项选择]【说明】下面是一个用C编写的快速排序算法。为了避免最坏情况,取基准记录pivot时,采用从left、right和mid=[(left+right)/2]中取中间值,并交换到right位置的办法。数组a存放待排序的一组记录,数据类型为T,left和right是待排序子区间的最左端点和最右端点。
void quicksort (int a[], int left, int right)
int temp;
if (left<right)
hat pivot = median3 (a, left, right); //三者取中子程序
int i = left, j = right-1;
for(;;)
while (i <j && a[i] < pivot) i++;
while (i <j && pivot < a[j]) j--;
if(i<j)
temp = a[i]; a[j] = a[i]; a[i] = temp;
i++; j--;
else break;
if (a[i] > pivot)
temp = a[i]; a[i] = a[right]; a[right] = temp;
quicksort( (1) ); //递归排序左子区间
quieksort(a,i+1 ,right); //递归排序右子区间
void median3 (int a[], int left, int right)
int mid= (2) ;
int k = left;
if(a[mid] < a[k])k = mid;
if(a[high] < a[k]) k = high; //选最小记录
int temp = a[k]; a[k] = a[left]; a[left] = temp; //最小者交换到 left
if(a[mid] <
[简答题]下面是快速排序的递归算法。试在算法后的空白中填上正确的内容,将该算法补充完整使其完成预定功能。#define M 500typedef struct{int key;char info;}NODENODE r[M];quiksort(NODE r[],int low,int hig) { int i, j; NODE x; if(low>=hig) return; i=low; j=hig;x=r[i]; do { while((r[j].key>=x.key)&&(j>i)) (1) ; if(ii)) (2) ; if(i (3) ; }(1)_____________(2)_____________(3)_____________
[单项选择]
传导速度最快的是
A. 窦房结
B. 心房肌
C. 心室肌
D. 房室交界
E. 浦肯野纤维
[单项选择]
传导速度最快的部位是
A. 窦房结
B. 心房肌
C. 房室交界
D. 浦肯野纤维
E. 房室束