10.29数算小复习(选择题细节,二路归并,结构体排序)

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

10.29数算小复习(选择题细节,二路归并,结构体排序)_第1张图片

10.29数算小复习(选择题细节,二路归并,结构体排序)_第2张图片

10.29数算小复习(选择题细节,二路归并,结构体排序)_第3张图片

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

10.29数算小复习(选择题细节,二路归并,结构体排序)_第4张图片

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

T

10.29数算小复习(选择题细节,二路归并,结构体排序)_第5张图片

10.29数算小复习(选择题细节,二路归并,结构体排序)_第6张图片 

二路归并操作的功能是:

A.将两个有序表合并为一个新的有序表

10.29数算小复习(选择题细节,二路归并,结构体排序)_第7张图片

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

A.插入排序

10.29数算小复习(选择题细节,二路归并,结构体排序)_第8张图片

10.29数算小复习(选择题细节,二路归并,结构体排序)_第9张图片

插入排序没有使用额外空间,归并排序使用了额外的辅助空间

标记

下列排序方法中,若将顺序存储更换为链式存储,则算法的时间效率会降低的是:D.仅4、5

1.插入排序;2.选择排序;3.冒泡排序;4.希尔排序;5.堆排序

下列排序算法中,▁▁▁▁▁ 是不稳定的。

A.简单选择排序

B.直接插入排序

C.归并排序

D.基数排序

10.29数算小复习(选择题细节,二路归并,结构体排序)_第10张图片

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

10.29数算小复习(选择题细节,二路归并,结构体排序)_第11张图片

10.29数算小复习(选择题细节,二路归并,结构体排序)_第12张图片 

二路归并

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];
    }
}

10.29数算小复习(选择题细节,二路归并,结构体排序)_第13张图片 

在while条件里cin>>n,可以实现10.29数算小复习(选择题细节,二路归并,结构体排序)_第14张图片

结构体排序,多指标

10.29数算小复习(选择题细节,二路归并,结构体排序)_第15张图片 

先依据ch降序,再依据math降序,最后看id的升序

  sort(stu+1, stu + n+1, cmp);

排序调用,直接数组名+需要排序部分的下标起始与终点,左闭右开 

你可能感兴趣的:(算法,排序算法,算法,数据结构)