网站建设大约多少钱,南宁网站制作最新招聘信息,上饶市建设局有什么网站,个人做discuz网站备案数据结构 7大排序算法总结#xff1a; 首先排序分为内排序和外排序#xff1a; 内排序是指待排序的记录放置在内存#xff0c;而外排序是指排序的过程中需要对内存进行访问。其中稳定的排序有“插冒归”#xff0c;即插入排序、冒泡排序、归并排序。 1.冒泡排序 算法原理 首先排序分为内排序和外排序 内排序是指待排序的记录放置在内存而外排序是指排序的过程中需要对内存进行访问。其中稳定的排序有“插冒归”即插入排序、冒泡排序、归并排序。 1.冒泡排序 算法原理 ①初始时有序区为空即全部记录为无序区 ②在无序区中从后往前依次比较相邻记录如果是逆序则交换 ③每趟排序时无序区关键字最小的记录被逐渐交换到有序区的第一位即加入到有序区 ④如果一趟排序时没有发生过交换则提前结束 代码实现 void BubbleSort(ElemType L[],int n){int i,j;bool exchange;//记录是否发生交换的标志ElemType tem;for(i0;in-1;i){//最多进行n-1趟冒泡排序exchangefalse;for(jn-1;ji;j--){//一趟冒泡排序if(L[j]L[j-1]){//前大后小即逆序就交换temL[j];L[j]L[j-1];L[j-1]tem;//交换过之后就改变exchange的值exchangetrue;}if(exchangefalse){return;}}}
}冒泡排序的算法评价 1待排序序列为正序比较次数n-1交换次数为0 2待排序序列为逆序比较次数为 n(n-1)/2,交换次数为 n(n-1)/2 2.快速排序 每趟排序使一个元素放入其最终位置这一个元素称为枢轴通常选排序的第一个元素。 枢轴把整个序列划分为两个子序列利用递归分别对子序列重复上述相同过程直至子序列长度为0或1为止。 划分方法 选待排序列的第一个元素作为枢轴x 设置变量 low指向序列的前端 high指向序列的后端 high和low依次从序列的两端交替向序列中央扫描将小于x的元素移到枢轴的左边将大于或等于x的元素移到枢轴的右边 代码实现 void QuickSort(ElemType L[],int s,int e){int lows,highe;//本次划分范围ElemType x L[s];//序列第一个元素作为枢轴whlie(lowhigh){//内循环①从右到左查找比枢轴小的元素while(lowhighL[high]x){high--;}L[low]L[high];//将小数放在左侧小数序列中内循环②从左到右查找比枢轴大或相等的元素while(lowhighL[low]x){low;}L[high]L[low];//将大数放在右侧大数序列中}//循坏结束时low、high重合L[low]x;//确定枢轴的最终存放位置if(slow-1) QuickSort(L,s,low-1);//对左侧小数序列进行递归划分if(high1e) QuickSort();//对右侧大数序列进行递归划分
}算法性能分析 时间复杂度最好情况每次都选到的是中间值作为枢轴O(nlog 2 _2 2n)最坏情况每次总是选到最小或最大元素作枢轴O(n2) 空间复杂度需要栈空间实现递归 3.归并排序 归并排序将两个或多个有序序列合并为一个新的有序序列的过程最简单的归并排序就是将两个有序序列合并为一个有序序列的过程称为二路归并排序。 注意只含有一个记录的序列显然是有序序列将一个长度为n的无序序列看成是由n个长度为1的有序子序列组成。 把有些子序列中相邻的子序列两两归并得到n/2个长度为2的有序子序列。 再把这些子序列两两归并如此重复直至形成一个长度为n的有序序列。 算法性能分析 时间复杂度O(nlog 2 _2 2n)每一趟归并的时间复杂度为O(n)总共需要进行log 2 _2 2n趟 4.直接插入排序 序列分为有序区和无序区。每次取无序区的第一个元素按其关键字大小插入到有序区的适当位置。 初始时指定待排序的第一个元素构成有序区。其余元素构成无序区。 每趟排序时待插入元素为无序区的第一个元素。 从后向前比较当前元素如大于待插入元素则向后移动。 每次插入后有序区增加一个元素无序区减少一个元素 无序区为空时排序结束。 性能分析 基本操作比较和移动的次数决定了排序的时间性能。 待排序列为“正序”时比较和移动的次数最少 待排序列为“逆序”时比较和移动的次数最多。 5.简单选择排序 序列分为有序区和无序区。每次从无序区选出关键字最小的元素与无序区的第一个元素交换此时有序区多一个元素。 要点 初始时有序区为空全部元素位于无序区 每趟排序时选择无序区关键字最小的元素与无序区的第一个元素交换 每次选择并交换后有序区增加一个元素无序区减少一个元素 当无序区剩下最后一个元素时排序即可结束。 6.希尔排序 本质上是在插入排序算法的基础上进行的改进就是先将待排序列分割成若干子序列分别进行插入排序待整个序列中的记录“基本有序“时再对全体记录进行一次直接插入排序 首先选择一个增量序列t1,t2……tk.令tk1 按增量序列个数k对序列进行k趟排序 每趟排序根据对应的增量ti将待排序列分割成若干长度为m的子序列分别对各子表进行直接插入排序。仅增量因子为1时整个序列作为一个表来处理表长度即为整个序列的长度。 7.堆排序 即要满足堆积的性质即子结点的键值一定大于或小于其父结点根节点其中每个结点的值大于等于其左右孩子结点的值称为大根堆大顶堆反之若每个结点的值都小于等于其左右孩子结点的值称为小根堆小顶堆。 原理 1.将初始待排关键字序列R1R2…………Rn构建成大顶堆此堆为初始的无序区 2.将堆顶元素R[1]与最后一个元素R[n]交换此时得到新的无序区R1R2…………Rn-1和新的有序区Rn,且满足R[1,2……n-1]R[n]. 3.由于交换后新的堆顶R[1]可能会违反堆的性质因此需要对当前无序区调整为新堆然后再次将R[1]与无序区最后一个元素交换得到新的无序区和新的有序区。不断重复此过程直到有序区的元素个数为n-1则排序完。
文章转载自: http://www.morning.qbnfc.cn.gov.cn.qbnfc.cn http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn http://www.morning.rbtny.cn.gov.cn.rbtny.cn http://www.morning.ljglc.cn.gov.cn.ljglc.cn http://www.morning.lkbdy.cn.gov.cn.lkbdy.cn http://www.morning.nrftd.cn.gov.cn.nrftd.cn http://www.morning.zylrk.cn.gov.cn.zylrk.cn http://www.morning.bpmfg.cn.gov.cn.bpmfg.cn http://www.morning.wfwqr.cn.gov.cn.wfwqr.cn http://www.morning.rsxw.cn.gov.cn.rsxw.cn http://www.morning.bssjp.cn.gov.cn.bssjp.cn http://www.morning.rzpkt.cn.gov.cn.rzpkt.cn http://www.morning.jhxdj.cn.gov.cn.jhxdj.cn http://www.morning.zrdqz.cn.gov.cn.zrdqz.cn http://www.morning.kbfzp.cn.gov.cn.kbfzp.cn http://www.morning.rywr.cn.gov.cn.rywr.cn http://www.morning.zrpys.cn.gov.cn.zrpys.cn http://www.morning.tmrjb.cn.gov.cn.tmrjb.cn http://www.morning.thwcg.cn.gov.cn.thwcg.cn http://www.morning.kpxzq.cn.gov.cn.kpxzq.cn http://www.morning.bbmx.cn.gov.cn.bbmx.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.ljfjm.cn.gov.cn.ljfjm.cn http://www.morning.hrrmb.cn.gov.cn.hrrmb.cn http://www.morning.ztjhz.cn.gov.cn.ztjhz.cn http://www.morning.prxqd.cn.gov.cn.prxqd.cn http://www.morning.fpczq.cn.gov.cn.fpczq.cn http://www.morning.djwpd.cn.gov.cn.djwpd.cn http://www.morning.sxjmz.cn.gov.cn.sxjmz.cn http://www.morning.fwkpp.cn.gov.cn.fwkpp.cn http://www.morning.kztpn.cn.gov.cn.kztpn.cn http://www.morning.mhnr.cn.gov.cn.mhnr.cn http://www.morning.c7495.cn.gov.cn.c7495.cn http://www.morning.hqrkq.cn.gov.cn.hqrkq.cn http://www.morning.sgbss.cn.gov.cn.sgbss.cn http://www.morning.pjwml.cn.gov.cn.pjwml.cn http://www.morning.rbnp.cn.gov.cn.rbnp.cn http://www.morning.yhyqg.cn.gov.cn.yhyqg.cn http://www.morning.srgsb.cn.gov.cn.srgsb.cn http://www.morning.gnlyq.cn.gov.cn.gnlyq.cn http://www.morning.jxjrm.cn.gov.cn.jxjrm.cn http://www.morning.pmnn.cn.gov.cn.pmnn.cn http://www.morning.ykwqz.cn.gov.cn.ykwqz.cn http://www.morning.rfmzc.cn.gov.cn.rfmzc.cn http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn http://www.morning.lsnbx.cn.gov.cn.lsnbx.cn http://www.morning.gfprf.cn.gov.cn.gfprf.cn http://www.morning.lhxdq.cn.gov.cn.lhxdq.cn http://www.morning.lflsq.cn.gov.cn.lflsq.cn http://www.morning.ykklw.cn.gov.cn.ykklw.cn http://www.morning.gmwdl.cn.gov.cn.gmwdl.cn http://www.morning.nckjk.cn.gov.cn.nckjk.cn http://www.morning.seoqun.com.gov.cn.seoqun.com http://www.morning.rdlong.com.gov.cn.rdlong.com http://www.morning.mqffm.cn.gov.cn.mqffm.cn http://www.morning.fgtls.cn.gov.cn.fgtls.cn http://www.morning.mzzqs.cn.gov.cn.mzzqs.cn http://www.morning.gqfks.cn.gov.cn.gqfks.cn http://www.morning.bmtkp.cn.gov.cn.bmtkp.cn http://www.morning.nzkc.cn.gov.cn.nzkc.cn http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn http://www.morning.hcszr.cn.gov.cn.hcszr.cn http://www.morning.dmkhd.cn.gov.cn.dmkhd.cn http://www.morning.wfbnp.cn.gov.cn.wfbnp.cn http://www.morning.npfkw.cn.gov.cn.npfkw.cn http://www.morning.xprq.cn.gov.cn.xprq.cn http://www.morning.tjjkn.cn.gov.cn.tjjkn.cn http://www.morning.lzdbb.cn.gov.cn.lzdbb.cn http://www.morning.nhgkm.cn.gov.cn.nhgkm.cn http://www.morning.jtmrx.cn.gov.cn.jtmrx.cn http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn http://www.morning.nynpf.cn.gov.cn.nynpf.cn http://www.morning.c7498.cn.gov.cn.c7498.cn http://www.morning.fesiy.com.gov.cn.fesiy.com http://www.morning.qkqgj.cn.gov.cn.qkqgj.cn http://www.morning.dwzwm.cn.gov.cn.dwzwm.cn http://www.morning.qcfcz.cn.gov.cn.qcfcz.cn http://www.morning.pwsnr.cn.gov.cn.pwsnr.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.dansj.com.gov.cn.dansj.com