![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DS考研
Kilorye
努力!
展开
-
线性表:顺序表的基本操作
顺序表的基本操作#include<stdio.h>#include<stdlib.h>#define MaxSize 10//静态分配 typedef struct{ int data[MaxSize];//存放数据元素 int length;//顺序表当前长度 }SqList;//顺序表的类型定义//基本操作——初始化一个顺序表void InitList(SqList &L){ for(int i=0;i<MaxSize;i++){ L.原创 2021-09-07 21:19:35 · 409 阅读 · 0 评论 -
2路归并排序
归并排序#include<stdio.h>#include<stdlib.h>int n; int *B=(int *)malloc(n*sizeof(int));//辅助数组B//A[low...mid]和A[mid+1...high]各自有序,将两个部分归并void Merge(int A[],int low,int mid,int high){ int i,j,k; for(k=low;k<=high;k++){ B[k]=A原创 2021-09-07 17:57:21 · 71 阅读 · 0 评论 -
选择排序:堆排序
堆排序#include<stdio.h>//交换 void swap(int &a,int &b){//注意带& int temp=a; a=b; b=temp;}//将以k为根的子树调整为大根堆void HeadAdjust(int A[],int k,int len){ A[0]=A[k];//A[0]暂存子树的结点 for(int i=2*k;i<=len;i*=2){//沿key较大的子结点向下筛选 if(i<len&am原创 2021-09-07 17:56:25 · 118 阅读 · 0 评论 -
选择排序:简单选择排序
简单选择排序#include<stdio.h>void swap(int &a,int &b){//注意带& int temp=a; a=b; b=temp;}void SelectSort(int A[],int n){ for(int i=0;i<n-1;i++){//一共进行n-1趟 int min=i;//记录最小元素位置 for(int j=i+1;j<n;j++){//在A[i...n-1]中选择最小的元素原创 2021-09-07 17:55:41 · 109 阅读 · 0 评论 -
交换排序:快速排序
快速排序#include<stdio.h>//用第一个元素将待排序序列划分成左右两部分int Partition(int A[],int low,int high){ int pivot=A[low];//第一个元素作为枢轴 while(low<high){//用low、high搜索枢轴的最终位置 while(low<high&&A[high]>=pivot) --high; A[low]=A[high];//比枢轴小的元素移到左端 whi原创 2021-09-07 17:54:45 · 235 阅读 · 0 评论 -
交换排序:冒泡排序
冒泡排序#include<stdio.h>void swap(int &a,int &b){ int temp=a; a=b; b=temp;}void BubbleSort(int A[],int n){ bool flag; for(int i=0;i<n-1;i++){ flag=false;//表示本趟冒泡是否发生交换 for(int j=n-1;j>i;j--){//一趟冒泡过程 if(A[j-1]>A[j]){//原创 2021-09-07 17:53:50 · 41 阅读 · 0 评论 -
插入排序:希尔排序
希尔排序#include<stdio.h>//希尔排序void ShellSort(int A[],int n){ int j; //A[0]暂存单元,不是哨兵,当j<=0时,插入位置已到 for(int d=n/2;d>=1;d/=2){//步长变化 for(int i=d+1;i<=n;++i){ if(A[i]<A[i-d]){//需将A[i]插入有序增量子表 A[0]=A[i];//暂存在A[0] for(j=i-d;j原创 2021-09-07 17:52:17 · 39 阅读 · 0 评论 -
折半插入排序
折半插入排序#include<stdio.h>#define MAXSIZE 20typedef int ElemType;//折半插入排序 void InsertSort(ElemType A[], int n){ int low,high,mid; for(int i=2;i<=n;i++){ //依次将A[2]~A[n]插入前面的已排序序列 A[0]=A[i]; //将A[i]暂存到A[0] low=1; high=i-1; //折半查找的范围原创 2021-09-07 17:51:27 · 131 阅读 · 0 评论 -
直接插入排序
直接插入排序#include<stdio.h>#define MAXSIZE 20typedef int ElemType;void InsertSort(ElemType A[],int n){ int i,j; for(i=2;i<=n;i++){ // 依次将A[2]~A[n]插入前面已排序序列 if(A[i]<A[i-1]){ // 若A[i]关键码小于其前驱,将A[i]插入有序表 A[0]=A[i]; // 复制为哨兵,A[原创 2021-09-07 17:50:14 · 170 阅读 · 0 评论