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

济宁市松岳建设机械有限公司网站销售易

济宁市松岳建设机械有限公司网站,销售易,长春一大网站,wordpress创建页面路由访问www.tomcoding.com网站#xff0c;学习Oracle内部数据结构#xff0c;详细文档说明#xff0c;下载Oracle的exp/imp#xff0c;DUL#xff0c;logminer#xff0c;ASM工具的源代码#xff0c;学习高技术含量的内容。 冒泡排序 这个算法可以说是排序算法中最著名的…访问www.tomcoding.com网站学习Oracle内部数据结构详细文档说明下载Oracle的exp/impDULlogminerASM工具的源代码学习高技术含量的内容。 冒泡排序 这个算法可以说是排序算法中最著名的一个了名字独特也好理解在一个数组中有n个元素扫描整个数组中没有排序的元素从第一个元素开始每个元素与它后面的元素比较数值小的放在前面数值大的放在后面那么经过第一轮扫描最大的数值就放在了数组最后的位置就像每个元素是一个气泡最大的气泡最先浮到数组顶端。第二轮扫描由于最大的元素已经找到需要找第二大的元素这时扫描的元素个数少了一个变为n-1经过第二轮扫描第二大的元素放到了数组倒数第二的位置。依次类推第三次扫描元素个数变为n-2第三大的元素排到了倒数第三的位置。这样每次扫描的元素越来越少最后扫描到未排序的元素只有一个时排序就结束了这时数组中的数值按照升序排列好了。 第0轮扫描n-1个元素从0开始到n-2每个元素j与后一个元素j1比较小的在前大的在后如果不一致时要把这两个元素交换位置。 第1轮扫描n-2个元素从0开始到n-3每个元素j与后一个元素j1比较。 第2轮扫描n-3个元素从0开始到n-4每个元素j与后一个元素j1比较。 第3轮扫描n-4个元素从0开始到n-5每个元素j与后一个元素j1比较。 …… 第n-2轮扫描1个元素第0个和第1个元素比较。 第n-1轮扫描0个元素结束。其实在上一轮比较完就可以结束了。 用C语言编写一个函数实现冒泡排序算法i表示扫描的轮的序号j表示每一轮中扫描的元素序号数组下标。 /* ai是要排序的整数数组指针 *  n是数组中元素的个数 */ void bubble_sort(int *ai, int n) { int         i, j, k; /* 循环n-1轮 */ for (i 0; i (n-1); i) { /* 每一轮扫描n-1-i个元素 */ for (j 0; j (n-1-i); j) { if (ai[j] ai[j1]) { /* 前一个元素比后一个大交换位置否则不用交换 */ k       ai[j]; ai[j]   ai[j1]; ai[j1] k; } } } } 选择排序 这个也是经常用到的排序算法甚至是最容易想到的算法虽然不好确定它的名字。工作原理如下把要排序的数组分成两部分第一部分是排过序的元素集合第二部分是没有排过序的元素集合开始时第一部分的元素个数为0第二部分为全部元素算法要进行多轮选择每一轮选择都是从第二部分元素中找到最小的元素把这个元素放到第一部分的末尾这样经过多轮选择后第一部分越来越大第二部分越来越小当第二部分元素数为0时排序就结束了。 实现算法时也有两个关键点要确定第一个是循环的轮数假设数组中元素的个数是n每一轮要找到一个最小数据所以原则上应该找n轮其实找到n-1轮时最后一轮就剩下一个元素了没有比较的必要了所以循环的轮数为n-1。第二个是每轮查找元素的个数看下表。 第0轮扫描n-0个元素从0到n-1 第1轮扫描n-1个元素从1到n-1 第2轮扫描n-2个元素从2到n-1 第3轮扫描n-3个元素从3到n-1 …… 第n-2轮扫描2个元素从n-2到n-1 第n-1轮扫描1个元素从n-1到n-1 用C语言写一个函数实现这个算法。 /* ai 是要排序的整数数组 *  n 是数组中元素的个数 * * 函数中ij是计数变量 * min_index是第二部分数组中最小值的元素下标 * min变量暂存第二部分中最小值 * tail是第一部分的尾部位置 * start是第二部分开始扫描的起始位置 */ static void selection_sort(int *ai, int n) { int         i, j, k, min_index; int         min; int         tail; int         start; /* 开始时第一部分没有元素尾部在第0个元素 */ tail 0; for (i 0; i (n-1); i) { start tail; min   ai[start]; min_index -1; for (j start; j n; j) { if (ai[j] min) { min_index j; min ai[j]; } } if (min_index ! -1) { /* 找到了最小值交换元素 */ k             ai[tail]; ai[tail]      ai[min_index]; ai[min_index] k; } tail; } } 这个函数看起来有些复杂我们来简化一下。从上面看tail其实就是i的位置start是i的下一个位置min值是扫描第二部分的第一个元素把这些简化后得到下面的函数。 void selection_sort(int *ai, int n) { int         i, j, k; int         min_index; for (i 0; i (n-1); i) { min_index i; for (j i1; j n; j) { if (ai[j] ai[min_index]) min_index j; } if (min_index ! i) { /* 交换元素 */ k             ai[i]; ai[i]         ai[min_index]; ai[min_index] k; } } } 检查排序结果 写一个函数来检查一下排序后的元素顺序有没有错误方法很简单在数组中遍历一次看看前一个元素是否比后一个元素大如果大就说明排序出错了。 void check_result(int *ai, int n) { int         i; for (i0; in-1; i) { if (ai[i] ai[i1]) { fprintf(stderr, error, element[%d]%d, element[%d]%d\n\n, i, ai[i], i1, ai[i1]); return; } } fprintf(stdout, element is sorted.\n\n); } 写一个程序测试一下排序结果。 int main(int argc, char *argv[]) { static int  chaos[16] {23, 6, 235, 89, 4, 12, 76, 35, 129, 30, 77, 15, 61, 44, 49, 88}; int         array[16]; fprintf(stdout, test for bubble_sort function.\n\n); memcpy(array, chaos, 16*sizeof(int)); bubble_sort(array, 16); check_result(array, 16); fprintf(stdout, test for selection_sort function.\n\n); memcpy(array, chaos, 16*sizeof(int)); selection_sort(array, 16); check_result(array, 16); return (0); }
http://www.tj-hxxt.cn/news/220575.html

相关文章:

  • 石家庄seo网站管理网站页面设计优化方案
  • 网页设计网站的主题中山市西区网站制作
  • 唐山玉田网站建设建盏大师排名与落款
  • 自己给网站做logo怎么搜索整个网站
  • 营销相关网站做网站一定要云解析吗
  • 响应式网站预览购票网站模板
  • 中江网站建设有限公司网站建设 中企动力重庆
  • 做电子书网站做网站费用入什么科目
  • 网站建设销售工作好么网页查询系统
  • 搜索关键字搜索到网站国外网站界面
  • 大公司做网站的优势帮别人做ppt赚钱的网站
  • 专业网站建设明细报价表poedit2 汉化wordpress
  • 商城网站系统建设方案wordpress 工作室模板
  • 权威的网站建设排行榜福田蒙派克6座二手值多少钱
  • 做pc端网站资讯企业邮箱怎么开通注册免费
  • 实木餐桌椅移动网站建设有哪些网站做的比较好看
  • 物流网站方案网站设计师工资怎样
  • 做网站域名自己弄江苏网站设计
  • 网站建设seo视频教程深圳装修设计公司排名前十强
  • 网站建设 科技公司暂时关闭wordpress
  • 自助网站建设公司电话建筑公司企业使命和愿景大全
  • 如何建设手机版网站蔡甸做网站
  • 先搭建网站还是先做ui网站专业性免费评价工具
  • 哪个网站专门做商铺啊中山精品网站建设行情
  • 免费响应式网站模板适合夫妻的suv
  • page做网站找一个网站做优化分析
  • 网站租用空间中国纪检监察报社社长
  • 网站建设与网页制作技术网站建设营销技巧
  • 延安市住建建设网站广州模板建站平台
  • 网站建设属于经营什么范围公司网站管理制度