C语言算法序与查找.pptVIP

  • 2
  • 0
  • 约5.21千字
  • 约 23页
  • 2019-05-02 发布于浙江
  • 举报
i=3;j:0~1 (n-i-2) * i=4;j:0~0 (n-i-2) * * 排序 ---程序设计中的常见算法 选择法 冒泡法 插入法 …… * 从所有的数中找出最小的一个,将其放在最前面;接着在余下的数中找出最小的一个,将其放在第二位,依次类推,数列由前往后逐渐成型。 用选择法对10个整数按照从小到大的顺序排列。 思 路 下面以6个数(22、34、10、5、89、45)为例,用图示说明。 * 选择法第一轮:先找出序列中最小的一个放在i=0位置。 22 34 10 5 89 45 i 0 1 2 3 4 5 22 34 10 5 89 45 排i=0位置 i=0 min=i j 22 34? j 22 10? min=j j 10 5? min=j j 5 89? j 5 45? 5 34 10 22 89 45 min!=i? * 选择法第二轮:找出序列中次小的一个放在i=1位置。 5 34 10 22 89 45 i 0 1 2 3 4 5 5 34 10 22 89 45 排i=1位置 i=1 min=i j 34 10? min=j j 10 22? j 10 89? j 10 45? 5 10 34 22 89 45 min != i? * 选择法第三轮:找出序列中第三小的放在i=2位置。 5 10 34 22 89 45 i 0 1 2 3 4 5 5 10 34 22 89 45 排i=2位置 i=2 min=i j 34 22? j 22 89? j 22 45? 5 10 22 34 89 45 min != i? min=j * 选择法第四轮:找出序列中第四小的放在i=3位置。 5 10 22 34 89 45 i 0 1 2 3 4 5 5 10 22 34 89 45 排i=3位置 i=3 min=i j 34 89? j 34 45? 5 10 22 34 89 45 min != i? * 选择法第五轮:找出序列中第五小的放在i=4位置。 5 10 22 34 89 45 i 0 1 2 3 4 5 5 10 22 34 89 45 排i=4位置 i=4 min=i j 89 45? 5 10 22 34 45 89 min != i? min=i 中心段出现为 for (i = 0; i 10 - 1; i++) { min = i; for(j = i + 1; j 10; j++) { if(arr[min] arr[j]) { min = j; } } if (min != i) { temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } 分析结果: 输入:n个数存入数组中 输出:排序后的n个数(小——大) 方法:选择法,当i:0~n-2,初值min=i,j:i+1~n-1,比较min与j所指元素值的大小,用min记下较小值的位置,当min!= i时,交换i与min所指元素的值,最小者最先排好,序列从前向后形成。 #include stdio.h int main(void) { int arr[10], i, j, temp, min; printf(Please input 10 numbers:\n); for (i = 0; i 10; i++) { scanf(%d, arr[i]); } for (i = 0; i 10 - 1; i++) { min = i; for(j = i + 1; j 10; j++) { if(arr[min] arr[j]) { min = j; } } if (min != i) { temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } printf(The sorted numbers:\n); for (i = 0; i 10; i++) { printf(%4d, arr[i]); } printf(\n); return 0; } * 对相邻两个数进行比较,将较小的调到前面,两两比较一轮之后,最大的一个数被放置在最后面;接着从头开始重复执行以上操作,次大的数被放置在倒数第二位,依次类推,数列由后往前逐渐成型。 用冒泡法对10个整数排序(从小到大)。 思 路 冒泡法的核心:小数上浮,大数下沉。 冒泡法第一轮:使最大的数放在最后一个位置上 22 34 10 5 89 45 i 0

文档评论(0)

1亿VIP精品文档

相关文档