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

网站建设报价方案下载百度地图的精准定位功能

网站建设报价方案下载,百度地图的精准定位功能,政府网站建设集约化服务器,广州番禺网站制作推广文章目录 (一)概念(二)基本思想(三)排序流程(三)代码实现 (一)概念 快速排序相当于对冒泡排序的一个优化,也是基于交换的排序算法 时间复杂度 O(…

文章目录

    • (一)概念
    • (二)基本思想
    • (三)排序流程
    • (三)代码实现

(一)概念

快速排序相当于对冒泡排序的一个优化,也是基于交换的排序算法
时间复杂度 O(nlogn)

(二)基本思想

通过一趟排序,将待排序数据分成两部分,其中一部分数据都比另一部分小,而这两部分数据的内部不要求有序;
然后再对这两部分数据做同样的操作,也各自分成一大一小两部分,依次类推,直到整个数据组有序

(三)排序流程

定义两个下标变量,分别指向待排序的数组段的头和尾
以下图为例:
在这里插入图片描述
定义一个flag变量记录左侧第一个元素flag=arr[low](为了编程方便,也可以记录右侧第一个元素),然后从右向左开始依次比较flag和数组元素的大小

  • 注:此处不要写成flag=arr[0]; 因为之后要对左右半边分别递归使用该函数,当对右半边排序时,应该使flag等于右半边的最左侧的数

如果flag<arr[high],就执行high- -,即下标high向左移动
在这里插入图片描述
如果flag>arr[high],就执行arr[low]=arr[high],low++,但是前提条件是low<high
在这里插入图片描述
此时再从左往右依次比较flag和arr[low]的大小
如果flag>arr[low],就执行low++
在这里插入图片描述
如果flag<arr[low],就执行arr[high]=arr[low],high- -,但是前提条件是low<high
在这里插入图片描述

循环上述两个步骤直到low==high时,将arr[low]=flag或者arr[high]=flag
此时flag左边都是比flag小的数,flag右边都是比flag大的数,但是两侧无序
在这里插入图片描述
之后再对左半边和右半边分别排序
此处仅以右半边为例,左半边同理,只是low和high的值不同。
右半边:low=5,high=9(左半边:low=0,high=3)
在这里插入图片描述
首先使flag=arr[low],此处为7
然后判断flag<arr[high]? 如果小于,就执行high- -
在这里插入图片描述

如果大于就执行arr[low]=arr[high],low++
在这里插入图片描述
之后判断flag>arr[low]? 如果大于,就执行low++
如果小于就执行arr[high]=arr[low],high- -
在这里插入图片描述
直到low==high时,arr[low]=flag或者arr[high]=flag
在这里插入图片描述
此时flag左边的值是比flag小的,右边的值是比flag大的,但是左右两边是无序的,因此再次执行上述操作使当前数据段再次分成左右两部分,再次分别对左右两部分进行排序。
因此使用递归即可完成,递归函数中实现的功能就是:
先调用一次sort函数,确定了flag的位置,然后再分别对左半边和右半边排序,直到左右半边无法再继续分隔,即出现low>high或者low==high的情况,此时即是递归函数的出口。

(三)代码实现

#include <stdio.h>int print(int *arr,int len){if(NULL==arr) return -1;for(int i=0;i<len;i++){printf("%d ",arr[i]);}putchar(10);return 0;
}int my_sort(int *arr,int low,int high){if(NULL==arr) return -1;int flag=arr[low];while(low < high){while(flag<arr[high]&&low<high){high--;}if(low<high){arr[low]=arr[high];low++;}while(flag>arr[low]&&low<high){low++;}if(low<high){arr[high]=arr[low];high--;}}arr[low]=flag;return low;
}int quick_sort(int *arr,int low,int high){if(NULL==arr) return -1;if(low < high){int ret=my_sort(arr,low,high);quick_sort(arr,low,ret-1);quick_sort(arr,ret+1,high);}return 0;
}int main(int argc, char const *argv[]){int arr[10]={5,2,3,10,7,1,4,9,6,8};printf("排序前:\n");print(arr,10);printf("排序后:\n");quick_sort(arr,0,9);print(arr,10);return 0;
}
http://www.dtcms.com/wzjs/50898.html

相关文章:

  • 湖南疫情最新情况风险等级分布图seo搜索引擎优化介绍
  • 云网站 制作今日国内重大新闻事件
  • php 网站后台管理系统搜索优化推广公司
  • asp做微网站百度竞价推广后台
  • 做游戏网站赚钱么南宁正规的seo费用
  • 手机网站弹出提示框军事新闻 今日关注
  • 无锡网站制作哪些武汉网站设计公司
  • 网站做营利性广告需要什么备案秒收录关键词代发
  • 西宁高端网站开发公司制作一个网站步骤
  • 做网站的竞品分析网站免费制作平台
  • 网站建设水上乐园怎么建立一个属于自己的网站
  • 庐江网站建设营销渠道的概念
  • 阿拉善盟网站制作营销软文的范文
  • 深圳松岗网站建设今天的新闻摘抄
  • 聚思博新网站建设企业站seo案例分析
  • 如何使用阿里云建设网站军事网站大全军事网
  • 你是网站设计有限公司的项目经理怎样优化标题关键词
  • 领秀网站建设网站优化排名易下拉效率
  • 中国建设银行网站会员注册哪些平台可以免费发布产品
  • seo网站建设爱站网影院
  • 做啊网站博客seo怎么做
  • 网站建设彩铃语北京建站公司
  • 大理 网站建设广州网络推广
  • 一台电脑赚钱的门路seo教程seo优化
  • 企业网站托管收费标准龙岗网站建设公司
  • 无锡做智能网站百度导航下载2022最新版官网
  • 帮你做海报网站网页生成
  • 沈阳的网站制作公司哪家好流量平台有哪些
  • wordpress自动跳转https性价比高seo排名优化的
  • 做网站最适合用多大的图片徐州seo排名公司