给定n个整数,n个数的取值范围为[1,k], 计数排序的时间复杂度是O (n+k) 。
给定n个整数,n个数的取值范围为[1,k], 计数排序的时间复杂度是O (n+k) 。
参考答案和解析
n+k
相关考题:
●下面算法是实现对n个整数的序列进行选择排序,其中序列的"长度"n为问题的规模。该算法的时间复杂度为 (23) 。void select_sort(int a[],int n){//将a中整数序列重新排列成从小到大有序的整数序列for(i=0;in-1;++i){j=i;for(k=i+1;kn;++k)if(a[k]a[j])j=k;if(j!=i){w=a[j];a[j]=a[i];a[i]=w;}}//select- sort(23) A.O(n3)B.O(n2)C.O(n)D.O(n4)
关于排序算法的以下说法,错误的是()A.归并排序的平均时间复杂度O(nlogn),最坏时间复杂度O(n^2)B.堆排序平均时间复杂度O(nlogn),最坏时间复杂度O(nlogn)C.冒泡排序平均时间复杂度O(n^2),最坏时间复杂度O(n^2)D.快速排序的平均时间复杂度O(nlogn),最坏时间复杂度O(n^2)
下面算法是实现对n个整数的序列进行选择排序,其中序列的“长度”n为问题的规模。该算法的时间复杂度为(11)。 void select_sort(int a[],int n){ //将a中整数序列重新排列成从小到大有序的整数序列 for(i=0;i<n-1;++i){ j=i; for(k=i+1;k<n;++k)if(a[k]<a[j])j=k; if(j!=i){w=a[j];a[j];a[i];a[i]=w} )//select_sortA.O(n2)B.O(n3)C.O(n4)D.O(n)
对n个基本有序的整数进行排序,若采用插入排序算法,则时间和空间复杂度分别为(62);若采用快速排序算法,则时间和空间复杂度分别为(63)。A.O(n2)和O(n)B.O(n)和O(n)C.O(n2)和O(1)D.O(n)和O(1)
直接选择排序的平均时间复杂度为(17)。最好情况下时间复杂度为O(n)的排序算法是(18)。在最好和最花情况下的时间复杂度均为O(nlogn)且稳定的排序方法是(19)。A.O(n)B.O(nlogn)C.O(n2)D.O(logn)
给定包含n个正整数的数组A和正整数x,要判断数组A中是否存在两个元素之和等于x,先用插入排序算法对数组A进行排序,再用以下过程P来判断是否存在两个元素之和等于x。low=1;high=n;while(high>low)if A[low]+A[high]=x return true;else if A[low]+A[high]>x low++;else high--;return false;则过程P的时间复杂度为( ),整个算法的时间复杂度为(请作答此空)。A.O(n)B.O(nlgn)C.O(n2)D.O(n2lgn)
直接插入排序的稳定性和时间复杂度分别是()。A、稳定排序且时间复杂度是O(n*n)B、不稳定排序且时间复杂度是O(n)C、稳定排序且时间复杂度是O(log2n)D、不稳定排序且时间复杂度是O(log2n)
单选题插入排序是一种简单实用的工具,在对数组排序时,我们可能用二分查找,对要插入的元素快速找到在已经排好元素序列中的位置。下面的描述中正确的是()。A二分查找的时间复杂度为O(lgN),因此排序的时间复杂度为O(N*lgN)B二分查找的时间复杂度为O(N),因此排序的时间复杂度为O(N*lgN)C二分查找的时间复杂度为O(lgN),因此排序的时间复杂度为O(N*N)D二分查找的时间复杂度为O(N),因此排序的时间复杂度为O(N*N)
单选题直接插入排序的稳定性和时间复杂度分别是()。A稳定排序且时间复杂度是O(n*n)B不稳定排序且时间复杂度是O(n)C稳定排序且时间复杂度是O(log2n)D不稳定排序且时间复杂度是O(log2n)