排序、复杂度、细节(选择题,判断题)



对于一个已经排好序的序列,直接插入排序的复杂度是O(n),而归并排序的复杂度是O(nlogn)。这时候归并排序就不比直接插入排序速度快了。
 归并排序的最好、最坏、平均时间都是O(nlogn),但是简单排序有些情况下是O(n).

仅基于比较的算法能得到的最好的“最坏时间复杂度”是O(NlogN)。
T

 
 
二路归并操作的功能是:
A.将两个有序表合并为一个新的有序表

排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置的方法称为:
A.插入排序


插入排序没有使用额外空间,归并排序使用了额外的辅助空间
标记
下列排序方法中,若将顺序存储更换为链式存储,则算法的时间效率会降低的是:D.仅4、5
1.插入排序;2.选择排序;3.冒泡排序;4.希尔排序;5.堆排序
下列排序算法中,▁▁▁▁▁ 是不稳定的。
A.简单选择排序
B.直接插入排序
C.归并排序
D.基数排序


每次都是从左到右进行,从低位到高位依次比较

 
 
二路归并
void merage(int l,int mid,int r) {
    int temp[110];
    int i=l,j=mid+1,k=l;
    while(i!=mid+1&&j!=r+1){//这里终止条件就写左右指针终点的后一个,表示走完了
        if(arr[i]>=arr[j]){//因为走到终点时也要执行操作
            temp[k++]=arr[j++];
        }else{
            temp[k++]=arr[i++];
        }
    }
    while(i!=mid+1){
        temp[k++]=arr[i++];
    }
      while(j!=r+1){
        temp[k++]=arr[j++];
    }
    for(int m=l;m<=r;m++){
        arr[m]=temp[m];
    }
} 
 
在while条件里cin>>n,可以实现
结构体排序,多指标
 
 
先依据ch降序,再依据math降序,最后看id的升序
  sort(stu+1, stu + n+1, cmp);排序调用,直接数组名+需要排序部分的下标起始与终点,左闭右开



















