当前位置: 首页 > news >正文

名牌网站设计的图片手机网页设计软件下载

名牌网站设计的图片,手机网页设计软件下载,安徽旅游在线网站建设,百度游戏风云榜目录 交换排序 冒泡排序 快速排序 插入排序 直接插入排序 选择排序 简单选择排序 堆排序 归并排序 各种排序的时间复杂度、空间复杂度、稳定性和复杂度 快排真题2016 选排真题2022 排序算法分为交换类排序、插入类排序、选择类排序、归并类排序。 交换排序 交换排…目录 交换排序 冒泡排序 快速排序 插入排序 直接插入排序 选择排序 简单选择排序 堆排序 归并排序 各种排序的时间复杂度、空间复杂度、稳定性和复杂度 快排真题2016 选排真题2022 排序算法分为交换类排序、插入类排序、选择类排序、归并类排序。 交换排序 交换排序分为冒泡排序、快速排序。 冒泡排序 #include stdio.h #include stdlib.h #include time.htypedef int ElemType; typedef struct {ElemType *elem;//存储元素的起始地址int TableLen;//元素个数 } SSTable;void ST_Init(SSTable ST, int len) {ST.TableLen len;ST.elem (ElemType *) malloc(sizeof(ElemType) * ST.TableLen);//申请一块堆空间当数组来使用int i;srand(time(NULL));//随机数生成每一次执行代码就会得到随机的10个元素for (i 0; i ST.TableLen; i) {ST.elem[i] rand() % 100;//生成的是0-99之间} }//打印数组中的元素 void ST_print(SSTable ST) {for (int i 0; i ST.TableLen; i) {printf(%3d, ST.elem[i]);}printf(\n); }//往往都是用两层循环 //优先去写内层循环再写外层循环 void BubbleSort(ElemType *A, int n) {int i, j;bool flag;for (i 0; i n - 1; i)//控制的是有序数的数目{flag false;for (j 0; j n - 1 - i; j)//内层控制比较和交换{if (A[j] A[j 1]) {//交换两个元素A[j] A[j] ^ A[j 1];A[j 1] A[j 1] ^ A[j];A[j] A[j 1] ^ A[j];flag true;}}if (false flag)//如果一趟比较没有发生任何交换说明数组有序提前结束排序{return;}} }int main() {SSTable ST;ST_Init(ST, 10);ST_print(ST);//随机后的结果打印BubbleSort(ST.elem, 10);ST_print(ST);//排序后再次打印return 0; }快速排序 #include stdio.h #include stdlib.h #include time.h #include string.htypedef int ElemType; typedef struct {ElemType *elem;//存储元素的起始地址int TableLen;//元素个数 } SSTable;void ST_Init(SSTable ST, int len) {ST.TableLen len;ST.elem (ElemType *) malloc(sizeof(ElemType) * ST.TableLen);//申请一块堆空间当数组来使用int i;srand(time(NULL));//随机数生成每一次执行代码就会得到随机的10个元素for (i 0; i ST.TableLen; i) {ST.elem[i] rand() % 100;//生成的是0-99之间} }//打印数组中的元素 void ST_print(SSTable ST) {for (int i 0; i ST.TableLen; i) {printf(%3d, ST.elem[i]);}printf(\n); }//快排的核心函数 //挖坑法 int partition(ElemType *A, int low, int high) {ElemType pivot A[low];//拿最左边的作为分割值并存储下来while (low high) {while (low high A[high] pivot)//从后往前遍历找到一个比分割值小的high--;A[low] A[high];//把比分隔值小的那个元素放到A[low]while (low high A[low] pivot)//从前往后遍历找到一个比分割值大的low;A[high] A[low];//把比分隔值大的那个元素放到A[high],因为刚才high位置的元素已经放到了low位置}A[low] pivot;//把分割值放到中间位置因为左边刚好都比它小右边都比它大return low;//返回分隔值所在的下标 }void QuickSort(ElemType *A, int low, int high) {if (low high) {int pivot_pos partition(A, low, high);//pivot用来存分割值的位置QuickSort(A, low, pivot_pos - 1);//前一半继续递归排好QuickSort(A, pivot_pos 1, high);} }int main() {SSTable ST;ST_Init(ST, 10);//初始化ST_print(ST);QuickSort(ST.elem, 0, 9);//注意这个位置是n-1,也就是9因为函数里取了high位置的值ST_print(ST);return 0; }插入排序 插入排序分为直接插入排序、折半插入排序、希尔排序。 直接插入排序 #include stdio.h #include stdlib.h #include time.htypedef int ElemType; typedef struct {ElemType *elem;//整型指针int TableLen; } SSTable;void ST_Init(SSTable ST, int len) {ST.TableLen len;//申请10个元素的空间ST.elem (ElemType *) malloc(sizeof(ElemType) * ST.TableLen);int i;srand(time(NULL));for (i 0; i ST.TableLen; i) {ST.elem[i] rand() % 100;//随机了10个数} }void ST_print(SSTable ST) {for (int i 0; i ST.TableLen; i) {printf(%3d, ST.elem[i]);}printf(\n); }void InsertSort(ElemType *A, int n) {int i, j, insertVal;for (i 1; i n; i)//外层控制要插入的数{insertVal A[i];//保存要插入的数//内层控制比较,j要大于等于0同时arr[j]大于insertval时arr[j]位置元素往后覆盖for (j i - 1; j 0 A[j] insertVal; j--) {A[j 1] A[j];}A[j 1] insertVal;//把要插入的元素放到对应的位置} }int main() {SSTable ST;ST_Init(ST, 10);//申请10个元素空间ST_print(ST);//排序前打印InsertSort(ST.elem, 10);ST_print(ST);//排序后再次打印return 0; }选择排序 选择排序分为简单选择排序、堆排序。 简单选择排序 #include stdio.h #include stdlib.h #include time.h #include string.h typedef int ElemType; typedef struct{ElemType *elem;int TableLen; }SSTable;void ST_Init(SSTable ST,int len)//申请空间并进行随机数生成 {ST.TableLenlen;ST.elem(ElemType *)malloc(sizeof(ElemType)*ST.TableLen);int i;srand(time(NULL));for(i0;iST.TableLen;i){ST.elem[i]rand()%100;} } void ST_print(SSTable ST) {for(int i0;iST.TableLen;i){printf(%3d,ST.elem[i]);}printf(\n); } void swap(ElemType a,ElemType b) {ElemType tmp;tmpa;ab;btmp; }void SelectSort(ElemType* A,int n) {int i,j,min;//min记录最小的元素的下标for(i0;in-1;i){mini;//我们认为i号元素最小for(ji1;jn;j)//找到从i开始到最后的序列的最小值的下标{if(A[j]A[min])//当某个元素A[j]小于了最小元素{minj;//将下标j赋值给minmin就记录下来了最小值的下标}}if(min!i){//遍历完毕找到最小值的位置后与A[i]交换这样最小值被放到了最前面swap(A[i],A[min]);}} }int main() {SSTable ST;ST_Init(ST,10);//初始化ST_print(ST);SelectSort(ST.elem,10);ST_print(ST);return 0; }堆排序 #include stdio.h #include stdlib.h #include time.h #include string.htypedef int ElemType; typedef struct {ElemType *elem;int TableLen; } SSTable;void ST_Init(SSTable ST, int len)//申请空间并进行随机数生成 {ST.TableLen len;ST.elem (ElemType *) malloc(sizeof(ElemType) * ST.TableLen);int i;srand(time(NULL));for (i 0; i ST.TableLen; i) {ST.elem[i] rand() % 100;} }void ST_print(SSTable ST) {for (int i 0; i ST.TableLen; i) {printf(%3d, ST.elem[i]);}printf(\n); }void swap(ElemType a, ElemType b) {ElemType tmp;tmp a;a b;b tmp; }//调整某个父亲节点王道书上的 void AdjustDown(ElemType A[], int k, int len) {int i;A[0] A[k];for (i 2 * k; i len; i * 2) {if (i len A[i] A[i 1])//左子节点与右子节点比较大小i;if (A[0] A[i])break;else {A[k] A[i];k i;}}A[k] A[0]; }//用数组去表示树 类似层次建树 王道书上的 void BuildMaxHeap(ElemType A[], int len) {for (int i len / 2; i 0; i--) {AdjustDown(A, i, len);} }//王道书上的 void HeapSort(ElemType A[], int len) {int i;BuildMaxHeap(A, len);//建立大顶堆for (i len; i 1; i--) {swap(A[i], A[1]);AdjustDown(A, 1, i - 1);} }//把某个子树调整为大根堆 void AdjustDown1(ElemType A[], int k, int len) {int dad k;//父亲的下标int son 2 * dad 1;//左孩子的下标while (son len) {//son可能也是最后一个元素在下面if中判断if (son 1 len A[son] A[son 1])//如果左孩子小于右孩子{son;//拿右孩子}if (A[son] A[dad])//如果孩子大于父亲{swap(A[son], A[dad]);//交换dad son;//son从新作为dad去判断下面的子树是否符合大根堆son 2 * dad 1;} else {break;}} }void HeapSort1(ElemType A[], int len) {int i;//就是把堆调整为大根堆for (i len / 2 - 1; i 0; i--) {AdjustDown1(A, i, len);}swap(A[0], A[len - 1]);//交换根部元素和最后一个元素for (i len - 1; i 1; i--)//i代表的是剩余的无序数的数组的长度{AdjustDown1(A, 0, i);//调整剩余元素变为大根堆swap(A[0], A[i - 1]);//交换根部元素和无序数的数组的最后一个元素} }int main() {SSTable ST;ST_Init(ST, 10);//初始化ElemType A[10] {3, 87, 2, 93, 78, 56, 61, 38, 12, 40};memcpy(ST.elem, A, sizeof(A));ST_print(ST);//HeapSort(ST.elem, 9);//王道书零号元素不参与排序考研考的都是零号元素要参与排序HeapSort1(ST.elem, 10);//所有元素参与排序ST_print(ST);return 0;return 0; }归并排序 #include stdio.h #include stdlib.h#define N 7 typedef int ElemType; //合并两个有序数组 void Merge(ElemType A[],int low,int mid,int high) {static ElemType B[N];//加static的目的是无论递归调用多少次都只有一个B[N]int i,j,k;for(ilow;ihigh;i)//把A[i]里的元素都给B[i]{B[i]A[i];}klow;//kij-mid-1for(ilow,jmid1;imidjhigh;)//合并两个有序数组{if(B[i]B[j]){A[k]B[i];i;k;}else{A[k]B[j];j;k;}}//把某一个有序数组中剩余的元素放进来while(imid)//前一半的有剩余的放入{A[k]B[i];i;k;}while(jhigh)//后一半的有剩余的放入{A[k]B[j];j;k;} }//归并排序不限制是两两归并还是多个归并考研都是考两两归并 void MergeSort(ElemType A[],int low,int high)//递归分割 {if(lowhigh){int mid(lowhigh)/2;MergeSort(A,low,mid);//排序好前一半MergeSort(A,mid1,high);//排序好后一半Merge(A,low,mid,high);//讲两个排序好的数组合并} }void print(int* a) {for(int i0;iN;i){printf(%3d,a[i]);}printf(\n); } //归并排序 int main() {int A[N]{49,38,65,97,76,13,27};//数组7个元素MergeSort(A,0,6);print(A);return 0; }各种排序的时间复杂度、空间复杂度、稳定性和复杂度 快排真题2016 #include stdio.h//考研初试只需要完成setPartition即可 int setPartition(int a[], int n) {int pivotkey, low 0, low0 0, high n - 1, high0 n - 1, flag 1, k n / 2, i;int s1 0, s2 0;while (flag)//当low等于k-1也就是n/2-1时分割结束{pivotkey a[low]; //选择枢轴while (low high) { //基于枢轴对数据进行划分while (low high a[high] pivotkey)--high;if (low ! high)a[low] a[high];while (low high a[low] pivotkey)low;if (low ! high)a[high] a[low];} //end of while(lowhigh)a[low] pivotkey;//把分割值放到对应的位置if (low k - 1)//如果枢轴是第 n/2 小元素划分成功{flag 0;} else {//是否继续划分if (low k - 1) {low0 low;//low0只是做暂存为下次使用准备这里我们low后low比分割值大1high high0;//把上次暂存的high0拿过来} else {low low0;//把上次暂存的low0拿过来high0 --high;//high0只是做暂存为下次使用准备}}}for (i 0; i k; i) {s1 a[i];}for (i k; i n; i) {s2 a[i];}return s2 - s1; }int main() {int A[10] {4, 1, 12, 18, 7, 13, 18, 16, 2, 15};int difference;difference setPartition(A, 10);//考研初试只需要完成setPartition即可无需编写这个main函数printf(%d\n, difference);return 0; }选排真题2022 #include stdio.h #include stdlib.h #include time.htypedef int ElemType; typedef struct{ElemType *elem;int TableLen; }SSTable;void ST_Init(SSTable ST,int len)//申请空间并进行随机数生成 {ST.TableLenlen;ST.elem(ElemType *)malloc(sizeof(ElemType)*ST.TableLen);int i;srand(time(NULL));for(i0;iST.TableLen;i){ST.elem[i]rand();} } void ST_print(SSTable ST) {for(int i0;i10;i){printf(%3d\n,ST.elem[i]);}printf(\n); } void swap(ElemType a,ElemType b) {ElemType tmp;tmpa;ab;btmp; }//调整子树 void AdjustDown(ElemType A[], int k, int len) {int dad k;int son 2 * dad 1; //左孩子下标while (sonlen){if (son 1 len A[son] A[son 1])//看下有没有右孩子比较左右孩子选大的{son;}if (A[son] A[dad])//比较孩子和父亲如果孩子大于父亲那么进行交换{swap(A[son], A[dad]);dad son;//孩子重新作为父亲判断下一颗子树是否符合大根堆son 2 * dad 1;}else {break;}} } void HeapSort(ElemType A[], int len) {int i;//先对前10个元素建立大根堆for (i len/2; i 0; i--){AdjustDown(A, i, len);}//比较剩余的A[10]到A[99999]元素小于堆顶就放入A[0],继续调整10个元素为大根堆for (i 10; i 100000; i){if (A[i] A[0]){A[0] A[i];AdjustDown(A, 0, 9);//继续调整为大根堆}} }int main() {SSTable ST;ST_Init(ST,100000);//初始化HeapSort(ST.elem,9);ST_print(ST);return 0; }
http://www.zqtcl.cn/news/320973/

相关文章:

  • 比格设计网站官网收录网站查询
  • 国外做直播网站淘宝电商网站怎么做的
  • 国外私人网站网站由那些组成
  • 网站备案多久通过机械设备网站
  • 企业自建站案例网站基础知识域名5个点
  • 咸宁建设网站海口市网站建设
  • 认识电子商务网站建设技术网站交换链接怎么做?
  • 定制商城网站建设全球搜索引擎排名2021
  • 徐州百度网站快速优化做网站视频图片加载不出来
  • 网站被host重定向处理浙江网新股吧
  • asp国外网站什么页游好玩
  • 高端简约30平米办公室装修广州搜索seo网站优化
  • 海口的网站建设公司wordpress二次元极简主题
  • 南京快速建站公司国家网站域名
  • 兰州装修公司哪家好网站seo推广员招聘
  • 郑州网站推广 汉狮网络易企秀类似的软件
  • 做外单网站成都网页制作公司排名
  • 成都优化网站关键词搜索引擎有哪些平台
  • 福建百川建设有限公司网站郑州手机软件开发公司
  • 盐城企业做网站多少钱88建网站
  • 南京网站制作报价wordpress主题 yusi
  • 北京建网站已备案网站新增接入
  • 做搬家服务网站问卷调查的目的房产网签是什么意思
  • 江苏品牌网站设计美团后台管理系统登录
  • 没有备案的网站会怎么样深圳的互联网公司排名
  • 阿里云 建设网站北京百度竞价托管公司
  • 怎么样做长久的电影网站安卓手机应用市场
  • 网站建设账户搭建济南网络优化哪家专业
  • 宜兴城乡建设局网站wordpress调用logo
  • 让他人建设网站需要提供的材料女生读电子商务好就业吗