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

渝快办官网搜索引擎优化实训

渝快办官网,搜索引擎优化实训,wordpress导入office,linux下如何打开wordpress快速排序与归并排序简介: quick_sort为快速排序,merge_sort为归并排序,两者基于分治的思想; 快速排序,简称快排,它以原来数组中的一个值(我们记为x)作为界限,将比它小…

快速排序与归并排序简介: 

quick_sort为快速排序,merge_sort为归并排序,两者基于分治的思想;

快速排序,简称快排,它以原来数组中的一个值(我们记为x)作为界限,将比它小的元素放到x的左边,大于x的放到x的右边,一遍之后,x就放到了它应该放到的位置,然后对x左侧的子数组做快排,同理,对于x右侧的子数组继续做快排即可;

归并排序,是将数组的中点作为界限,将处于前50%的值放在左一半,将大小处于后50%的值放在右一半。不考虑顺序。一轮过去,我们继续对数组前半边使用归并排序,同理,对于数组右半边使用归并排序。值得注意的是,归并排序一直这样递归下去,数组将不断被分割为大小为1的单个元素数组。前面我们并没有考虑顺序,现在我们使用一个tmp数组,对于两个已经被切割的子数组中的元素进行排序。对于原来两个数组各自使用一个指针从头到尾遍历,谁小谁就放在tmp数组中,遍历完成之后,如果有一个数组没有遍历完,那说明它的值相对于另一个数组来说值较大,我们直接拷贝到tmp数组中即可。这样tmp数组放的肯定就是已经排好序的元素,我们应该把他放到原数组中去,让它参与下一轮比较。

代码一览:

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<assert.h>
using namespace std;void Swap(int* pa, int* pb) {int temp = *pa;*pa = *pb;*pb = temp;
}
void quick_sort(int q[], int l,int r) {if(l >= r)return;int i = l - 1, j = r + 1;int x = q[(l + r) / 2];while (i < j) {do i++; while (q[i] < x);do j--; while (q[j] > x);if (i < j)Swap(&q[i], &q[j]);}quick_sort(q, l, j), quick_sort(q, j+1,r);//不要把这个忘记了!是j而不是i,如果是后者,模板得换;
}
int tmp[100];
void merge_sort(int q[], int l, int r) {if (l >= r)return;int mid = (l + r) / 2;merge_sort(q, l, mid), merge_sort(q, mid + 1, r);int i = l, j = mid + 1;int k = 0;while (i <= mid && j <= r) {if (q[i] < q[j])tmp[k++] = q[i++];else tmp[k++] = q[j++];}while (i <= mid) {tmp[k++] = q[i++];}while (j <= r) {tmp[k++] = q[j++];}for (k = 0, i = l; i <= r; k++,i++) {q[i] = tmp[k];}
}
int main() {int arr[] = { 95,1,45,45,454,5,45,62,64,87,84,36,16,1 };int arr2[] = { 95,1,45,45,454,5,45,62,64,87,84,36,16,1 };int len = sizeof(arr) / sizeof(arr[0]);quick_sort(arr, 0, len - 1);merge_sort(arr2, 0, len - 1);for (int i = 0; i < len; i++) {printf("%d ", arr[i]);}puts("");for (int i = 0; i < len; i++) {printf("%d ", arr2[i]);}puts("");return 0;
}

为了保证随机性,我们亦可以在main函数中使用随机数来初始化数组,其他不变:

int main(){int p[10],q[10];srand(time(NULL));for (int i = 0; i < 10; i++) {p[i] = rand() % 999 + 1;q[i] = rand() % 9999 + 1;}for (int i = 0; i < 10; i++) {printf("%d ", p[i]);}puts("");for (int i = 0; i < 10; i++) {printf("%d ", q[i]);}puts("");quick_sort(p, 0, 9);merge_sort(q, 0, 9);puts("");for (int i = 0; i < 10; i++) {printf("%d ", p[i]);}puts("");for (int i = 0; i < 10; i++) {printf("%d ", q[i]);}puts("");return 0;
}

http://www.zhongyajixie.com/news/13714.html

相关文章:

  • 杭州余杭区抖音seo质量高网站seo的方法
  • 做企业礼品的网站美国seo薪酬
  • 国内个人网站建设win7最好的优化软件
  • 怎么做的网站收录快关键词推广工具
  • 建材在哪些网站做关键词seo服务
  • 网站聚合页阿亮seo技术顾问
  • 俄语网站制作网络推广是干什么的
  • 网站设计专题页软文代发
  • 南县网站制作网络营销策略内容
  • 宠物网站建设方案书百度seo和sem
  • 网站设计电商运营怎么样在百度上推广自己的产品
  • 网站开发实用技术十大免费cms建站系统介绍
  • 英国做电商网站东莞网络推广策略
  • 网站推广是干嘛的站长工具seo综合查询5g
  • 奉化网站建设sem是什么意思的缩写
  • 西部数码网站站点厦门seo关键词排名
  • 学生个人主页制作关键词优化排名工具
  • 郑州网站建设 天强科技windows优化大师怎么样
  • 手机网站报价单模板下载百度识图在线识别
  • 做简历有什么网站b2b平台推广
  • 做淘宝客网站要备案吗南京谷歌推广
  • 做网站图片大会导致慢站内营销推广方式
  • 个人网站备案需要哪些材料焊工培训班
  • 网站建设案例包括哪些seo关键词快速排名前三位
  • 关于未备案网站windows优化大师手机版
  • 华宁网站建设网络推广优化服务
  • 网站不公开简历做家教搜索排名广告营销
  • iis wordpress index.php杭州市优化服务
  • 个人做网站开发头条新闻今日头条
  • 智能建站源码网上广告怎么推广