建立线性表并且可以顺序输出、折半输出

简介: 数据结构
#include<stdio.h>#include<stdlib.h>#define MAXSIZE 50//定义查找次数intnum1=0;
intnum2=0;
//定义线性表typedefstruct{
intelem[MAXSIZE];
intlength;
}sqlist;
//顺序查找intsearch(sqlistST, intkey)
{
inti;
ST.elem[0] =key;
for (i=ST.length; ST.elem[i] !=key; --i)
    {num1=num1+1;
    }
printf("顺序查找次数为:%d\n", num1);
returni;
}
//折半查找intsearch_bin(sqlistST, intkey)
{
intlow, high, mid;
low=1;
high=ST.length;
while (low<=high)
    {
mid= (low+high) /2;
if (key==ST.elem[mid]) 
        {num2=num2+1;
printf("折半查找次数为:%d\n", num2);
returnmid;}
elseif(key<ST.elem[mid]) {
num2=num2+1; high=mid-1;
        }
else        {
num2=num2+1; low=mid+1;
        }
    }
return0;
}
//创建线性表voidcreate_list(sqlist*ST)
{
inti;
printf("输入元素个数n\n");
scanf("%d", &ST->length);
for (i=1; i<=ST->length; i++)
    {
printf("\n data %d=", i);
scanf("%d", &(ST->elem[i]));
    }
}
intmain()
{
sqlistST;
intkey;
create_list(&ST);
printf("查找元素e=");
scanf("%d", &key);
if(search(ST, key) ==0)
    {
printf("fail!\n");
    }
else    {
printf("success!\n");
printf("顺序查找位置为:%d\n", search(ST, key));
printf("折半查找位置为:%d\n", search_bin(ST, key));
    }
//printf("顺序查找位置为:%d\n", search(ST, key));//printf("折半查找位置为:%d\n", search_bin(ST, key));return0;
}


相关文章
【剑指offer】-调整数组顺序使奇数位于偶数前面-13/67
【剑指offer】-调整数组顺序使奇数位于偶数前面-13/67
|
4月前
|
C语言 Python
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
328 4
|
5月前
|
C++
给出一个数据序列,建立二叉排序树,并实现插入功能 对二叉排序树进行中序遍历,可以得到有序的数据序列
该文章通过C++代码示例讲解了如何根据输入数据序列构建二叉排序树,并实现插入功能,随后通过中序遍历输出有序的数据序列,展示了对二叉排序树进行操作和遍历的完整过程。
|
8月前
58.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
58.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
43 0
|
8月前
|
存储 搜索推荐 Serverless
用指针和动态内存分配的方法输入10,2,30, 4,5,按输入顺序逆置排序,输出排序后的元素,即输出5,4,30,2,10
用指针和动态内存分配的方法输入10,2,30, 4,5,按输入顺序逆置排序,输出排序后的元素,即输出5,4,30,2,10
53 0
|
C语言
【C语言刷题】调整奇数偶数顺序、有序序列合并以及有序序列判断
【C语言刷题】调整奇数偶数顺序、有序序列合并以及有序序列判断
71 0
|
C语言
C语言:输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
描述 输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。 输入描述: 输入包含三行, 第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。 第二行包含n个整数,用空格分隔。 第三行包含m个整数,用空格分隔。
297 0
C语言:输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
|
存储 算法
数组算法:倒置,查找,插入,删除
数组算法:倒置,查找,插入,删除
90 0
剑指offer 20. 调整数组顺序使奇数位于偶数前面
剑指offer 20. 调整数组顺序使奇数位于偶数前面
60 0
|
算法
算法 | 妙用递归(顺序&逆序)打印一个数的每一位
- 程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用 - 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问-题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量 - 递归的能力在于用有限的语句来定义对象的无限集合 - 一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回
274 0
算法 | 妙用递归(顺序&逆序)打印一个数的每一位

热门文章

最新文章

下一篇
开通oss服务