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

评价中国建设银行网站烟台微网站

评价中国建设银行网站,烟台微网站,雅虎网站提交入口,手机网站开发和pc网站的区别排序算法&#xff1a;交换类排序&#xff0c;插入类排序、选择类排序、归并类排序 交换类排序&#xff1a;冒泡排序、快速排序 一、冒泡排序 #include <stdio.h> #include <stdlib.h> #include <time.h> typedef int ElemType; typedef struct{ElemType *e…

排序算法:交换类排序,插入类排序、选择类排序、归并类排序

交换类排序:冒泡排序、快速排序

一、冒泡排序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int ElemType;
typedef struct{ElemType *elem; //整形指针,申请的堆空间的起始地址存入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){int i;for(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 BubbleSort(ElemType A[],int n){int i,j;bool flag; for(i=0;i<n-1;i++){ //控制的是有序数的数目flag=false; for(j=n-1;j>i;j--){ //内层控制比较和交换 if(A[j-1]>A[j]){swap(A[j-1],A[j]);flag=true;}}if(flag==false){ //如果一趟没有发生任何交换,说明数组有序,提前结束排序return; }} 	
}int main(){SSTable ST;ST_Init(ST,10); ST_print(ST);BubbleSort(ST.elem,10); ST_print(ST);return 0;
}

 时间复杂度:内层是j>i,外层是从0到n-1,运行的总次数是1+2+3+4+...+n-1,即O(n^{2})

空间复杂度:O(1),没有使用额外空间,不会因为n的变化而变化

如果数组本身有序,最好的时间复杂度是O(n)

二、快速排序

核心:分治思想

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int ElemType;
typedef struct{ElemType *elem; //整形指针,申请的堆空间的起始地址存入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){int i;for(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;
} 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]; while(low<high&&A[low]<=pivot){++low;}A[high]=A[low];}A[low]=pivot;return low; //返回分割值所在的下标 
}//递归实现
void QuickSort(ElemType A[],int low,int high){if(low<high){int pivotpos=Partition(A,low,high);QuickSort(A,low,pivotpos-1);QuickSort(A,pivotpos+1,high);}
} int main(){SSTable ST;ST_Init(ST,10); ST_print(ST);QuickSort(ST.elem,0,9); ST_print(ST);return 0;
}

空间复杂度与n有关 

三、插入排序

插入排序:直接插入排序、折半插入排序、希尔排序

直接插入排序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int ElemType;
typedef struct{ElemType *elem; //整形指针,申请的堆空间的起始地址存入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){int i;for(i=0;i<ST.TableLen;i++){printf("%3d",ST.elem[i]);}printf("\n");
}void InsertSort(ElemType *arr,int n){int i,j,insertVal;for(i=1;i<n;i++){ //控制要插入的数 insertVal=arr[i]; //先保存要插入的值//内层控制比较,往后覆盖 for(j=i-1;j>=0&&arr[j]>insertVal;j--){arr[j+1]=arr[j];} arr[j+1]=insertVal;}
}int main(){SSTable ST;ST_Init(ST,10); ST_print(ST);InsertSort(ST.elem,10); ST_print(ST);return 0;
}

http://www.yayakq.cn/news/417198/

相关文章:

  • 临沂公司做网站网站开发报价范围
  • wordpress 调整布局嘉兴做网站优化哪家好
  • 做网站好还是网页好免费微信小程序制作模板
  • 网站备案链接代码常州网站建设平台
  • 龙井建设局网站中国机械加工网怎么样
  • 婚庆设备租赁网站源码大连企业网站设计
  • 石狮外贸网站建设公司报价wordpress 图像相册
  • 做别人一样的网站建行官网官网网站吗
  • 网站上传后网络优化seo
  • 服务号微网站怎么做的如何做电子商务网站
  • 做购物类网站有哪些微信官方小程序商城
  • 小说网站开发过程 实训报告怎么查一个网站是什么程序做的
  • 学做蛋糕的网站房产备案查询
  • 不知情的情况下帮别人做网站他违法微信小程序源码提取工具
  • 宁波做百度网站推广做家教网站
  • 网站建设做网站怎么做深圳网站外包公司
  • 有了域名就可以做网站了吗校园营销渠道有哪些
  • 网站文章图片如何跳转多备份 wordpress
  • 网络广告推广公司seo怎么做优化计划
  • 怎样在建设部网站上查公司信息深圳市网站制作最好的公司
  • 网站分析百度长沙租房网
  • dedecms 生成网站地图网络营销的营销方式
  • 手机网站建设机构电子商务网站建设实例
  • 郑州网站seo优静态网站的建设模板
  • 龙岩市住房和城乡建设局网站英文网站的首页怎么做
  • 网页制作工具的选择与网站整体风格是有关系的龙岩网站排名
  • 做网站的边框素材北京软件开发公司企云云
  • wordpress 整合ckseo关键词推广多少钱
  • 沈阳市建设局网站十堰网站建设u2028
  • 民权平台网站建设wordpress 安装 空白