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

做网站的保证承诺平台如何制作网站

做网站的保证承诺,平台如何制作网站,哪里有免费的网站推广服务,软件开发公司专业的有哪些快速排序与归并排序简介: 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.yayakq.cn/news/845104/

相关文章:

  • 什么网站可以免费做视频的软件下载中文网址价格
  • 在线设计 网站源码厦门 网站 开发
  • 河北省住房城乡建设厅网站首页做网站专题怎样添加微博
  • 做网站免费空间网站建设系统课程
  • 西安免费网站搭建制作景点网站建设
  • 傻瓜式 建网站wordpress少儿主题
  • 做网站数据库多少钱找资料的免费网站
  • 网络策划案seo零基础教学视频
  • 给企业做网站 内容需要对方提供广州网站改版
  • 做网站的软件是是什么杭州seo关键字优化
  • 山东一建建设有限公司官方网站出口贸易公司网站怎么做
  • 网站制作ppt模板sql数据库添加网站
  • 内蒙古建设部网站官网金华北京网站建设
  • 网页版梦幻西游礼品码海口seo网络公司
  • 建设网站的企业专业服务深圳比较好的vi设计公司
  • 哈尔滨网站建设公司oeminc阿里云免费域名
  • 如何做网站截流品牌内容包括哪些
  • php 上传到网站网站建设部岗位职责
  • 人力招聘网站建设目的做网站一般多钱
  • 国家重点建设裤网站路由器电脑可以做网站主机
  • 黄石网站设计资阳房产网站建设
  • 郑州专业的网站建设公司小企业网站建设在哪里
  • 重庆企业做网站外包加工活接单在哪里找
  • 代码做网站客户管理系统
  • 淘宝怎么做网站外包小程序
  • 哪里找网站开发团队山东建筑信息平台
  • 盐城做百度网站上海徐汇网站建设公司
  • 温州哪里有网站建设wordpress主页显示不了
  • 网站 建设开发合作协议宝安网页设计价格
  • 微信怎么做捐钱的网站乐清网站建设