用c语言写一个算法(折半或二分法),实现可以选择1到20的从小到大以

用c语言写一个算法(折半或二分法),实现可以选择1到20的从小到大以及从大到小。

解:用有序列插入法排序,过程如下:

第一步:7 1 (前两个数7,1排成有序列)

第二步:7 3 1 (第3个数3按要求插入到已排好的有序列中)

第三步:12 7 3 1 (第4个数12按要求插入到已排好的有序列中)

第四步:12 8 7 3 1 (第5个数8按要求插入到已排好的有序列中)

第五步:12 8 7 4 3 1 (第6个数4按要求插入到已排好的有序列中)

第六步:12 9 8 7 4 3 1 (第7个数9按要求插入到已排好的有序列中)

第八步:12 10 9 8 7 4 3 1 (第8个数10按要求插入到已排好的有序列中)

这时各数的顺序就是符合要求的最终顺序.

用折半插入排序法,将新数据6插入到上面的有序列中,算法步骤设计如下:

第一步:把新数据6与逗中间位置地的数据8比较,由于6<8,所以应将6放到8的右边的一半有序列中,即应放到有序列7,4,3,1中.

第二步:把6与有序列7,4,3,1逗中间位置地的数据4比较,由于4<6,所以应将6放到4的左边的一半有序列中,即应放到有序列7,4中.

第三步:把6与有序列7,4逗中间位置地的数据7比较,由于7>6,所以应将6放到7的右边的一半有序列中,至此排序完成,得到一新的有序列

12,10,9,8,7,6,4,3,1
温馨提示:内容为网友见解,仅供参考
无其他回答

用c语言写一个算法(折半或二分法),实现可以选择1到20的从小到大以
第一步:把新数据6与逗中间位置地的数据8比较,由于6<8,所以应将6放到8的右边的一半有序列中,即应放到有序列7,4,3,1中.第二步:把6与有序列7,4,3,1逗中间位置地的数据4比较,由于4<6,所以应将6放到4的左边的一半有序列中,即应放到有序列7,4中.第三步:把6与有序列7,4逗...

C语言折半查找法详细代码(假如有10个已排好序的数)
折半查找即二分查找,思想是:在一组有序的数据中查找一个数据,首先将要查找的数据与这组数中间的值比较,如果要查找的数据比它小,则在左半部分中继续查找;若比中间值大,则在右半部分中继续查找,相等的话就表示已找到,直接返回。这样,每次查找都可以将查找范围缩小一半,以此达到O(log N)的...

用C语言编写顺序查找和二分查找(折半查找)
顺序查找:在一个已知无序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从第一个开始逐个比较,直到找出与给定关键字相同的数为止。复杂度为o(n).二分查找又称折半查找,它是一种效率较高的查找方法。【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排...

求二分法排序的c语言算法
int i,j,k,low,high,mid,t;for(i=k=1;i<sizeof a\/sizeof a[0];i++)\/\/起始认为第一个元素是有序的,high=low=k-1=0,所以k=1,{ low=0;high=k-1;while(low<=high)\/\/\/折半查找时,low与high相遇,则找到插入位置 { mid=(low+high)\/2;if(a[mid]>=a[i])high=mid-1;\/\/...

C++折半查找法
折半查找法是算法一种,可以被任何计算机语言使用。用C语言自然也可以实现。1、定义:在计算机科学中,折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,...

用二分法查找(折半查找)java
利用循环的方式实现二分法查找 public class BinarySearch {public static void main(String[] args) {\/\/ 生成一个随机数组 int[] array = suiji();\/\/ 对随机数组排序 Arrays.sort(array);System.out.println("产生的随机数组为: " + Arrays.toString(array));System.out.println("要进行...

c语言(高分)
c语言(高分) 常用算法的应用1.递推算法(常用级数、数列求和、二分法、梯形积分法、穷举法等);2.排序算法(选择法、冒泡法);3.查找算法(顺序查找、折半查找);4.有序数列的插入、删除操... 常用算法的应用1.递推算法(常用级数、数列求和、二分法、梯形积分法、穷举法等);2.排序算法(选择法、冒泡法);3.查找...

在n个已经排好序从小到大的数中查询某一个数据,如果找到就指出其在n个...
\/\/ 下面对算法的原理作出了详细的解释,如有不懂可追问。#include <stdio.h> int Dichotomy(int a[],int _value,int n){ \/\/ 二分法(也称折半查找法) int index=0; \/\/ 当前数组的首元素下标 int current=n-1; \/\/ 数组当前的大小 int k; \/\/ 当前数组中间的数的下标 while...

有15个数按小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法...
比如给一个4的数,程序第一步从数组中取出排在中间数的数(i=7),即第8个数89.用89和4比较。如果大于89就往后循环查找,即查找89后的{144,233,377,570,671,703,812},如果小于89就往前查找,即查找89前的]{1,4,9,13,21,34,55},不管往前还是往后最大循环次数都是7,所以while循环结束条件是(fabs(i-7)...

计算机二级C语言100套上机填空题和改错题
南开二级C语言上机100题1、 改错题1下列给定程序的功能是:读入一个整数(2<=k《=10000》,打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2、3、5、7、11。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构!试题程序:#inclu...

相似回答