首页 > 其他分享 >利用二分法删除数组中元素

利用二分法删除数组中元素

时间:2024-04-30 16:16:15浏览次数:19  
标签:end 删除 int 二分法 middle num 数组 first

二分法的思想主要是要设定起始值和终点值,计算中值,和给定值进行比较,如果大于给定值,则将中值作为终点值,否则作为起始值,重新计算中值

#include<stdio.h>
int main(){

    int array[10] = {1,2,3,5,8,15,20,30,100,200};
    int first=0,end=9,middle=(first+end)/2,num,i;
    scanf("%d",&num);
    bool right=0;
    for (int i=0; i<10; i++){
    	if (array[i]==num){
    		right = 1;
    		break;
		}
	}
	if (right==0){
		printf("num is not in array, donot need delete!");
		return 0;
	}
    while(array[middle]!=num){
    	if(array[middle] > num){
    		end = middle;
		}else{
			first = middle;
		}
		middle = (first + end)/2;
    	
	}
	printf("middle=%d\n",middle);
	for (i = middle;i<9;i++){
		array[i] = array[i+1];
	}
	
	
	
	printf("new array:\n");
	for (i=0;i<9;i++){
		printf("%d\n",array[i]);
	}	
	
	return 0;
}

标签:end,删除,int,二分法,middle,num,数组,first
From: https://www.cnblogs.com/bonne-chance/p/18168184

相关文章

  • JavaScript数组
     JavaScript数组数组(Array)是属于内置对象,数组和普通对象的功能类似,都可以用来存储一些值。不同的是:普通对象是使用字符串作为属性名,而数组是使用数字作为索引来操作元素。索引:从0开始的整数就是索引。数组的存储性能比普通对象要好。在实际开发中我们经常使用数组存储......
  • 重新排列数组
    给你一个数组nums,数组中有2n个元素,按[x1,x2,...,xn,y1,y2,...,yn]的格式排列。请你将数组按[x1,y1,x2,y2,...,xn,yn]格式重新排列,返回重排后的数组。我写的:  publicint[]Shuffle(int[]nums,intn){      int[]newNums=newint[2*n];  ......
  • Go语言系列——数组和切片、可变参数函数、Maps、字符串、指针、结构体、方法、接口(一
    文章目录11-数组和切片数组数组的声明数组是值类型数组的长度使用range迭代数组多维数组切片创建一个切片切片的修改切片的长度和容量使用make创建一个切片追加切片元素切片的函数传递多维切片内存优化12-可变参数函数什么是可变参数函数语法通过一些例子理解可变参......
  • Radash库使用说明——数组方法篇(全)
    写在前面tips:点赞+收藏=学会!本文包含radash中数组相关的所有方法说明+使用示例+思维导图查看这边会整理出一份数组相关方法的使用大纲(不含源码解析),方便大家查阅使用;作者会按照大类进行整理分享,本次也会同步给出Array所有方法的思维导图;所有方法整理完毕后,作者会整......
  • openGauss 创建-删除MOT
    创建/删除MOT创建MOT非常简单。只有MOT中的创建和删除表语句与openGauss中基于磁盘的表的语句不同。SELECT、DML和DDL的所有其他命令的语法对于MOT表和openGauss基于磁盘的表是一样的。创建MOT:createFOREIGNtabletest(xint)[servermot_server];以上语句中:始终使......
  • openGauss 删除表中数据
    删除表中数据在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行的删除。SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件进行。如果表中有一个主键,用户可以指定准确的行。用户可以删除匹配条件的一组行或者一次删除表中的所有行。使用DELETE命令删除......
  • 力扣-852. 山脉数组的峰顶索引
    1.题目题目地址(852.山脉数组的峰顶索引-力扣(LeetCode))https://leetcode.cn/problems/peak-index-in-a-mountain-array/?envType=study-plan-v2&envId=primers-list题目描述符合下列属性的数组arr称为山脉数组:arr.length>=3存在i(0<i <arr.length-1)使得: ......
  • SQL Server实战三:数据库表完整性约束及索引、视图的创建、编辑与删除
      本文介绍基于MicrosoftSQLServer软件,实现数据库表完整性约束、索引与视图的创建、编辑与删除等操作的方法。目录1交互式为数据库表S创建PRIMARYKEY约束2交互式创建数据库表TEST_SC,创建PRIMARYKEY约束3T-SQL创建数据库表T的PRIMARYKEY约束4T-SQL创建数据库表TEST_C,以......
  • 关于零长度数组的思考
    首先看一下以下的结构声明structPacket{intcmd;intlen;charbody[0];};可以看到body被声明为一个长度为0的字符数组。经过测试,sizeof(Packet)的值为8,也就是说body实际上并没有分配内存。这种数组被称作零长度数组(ArraysofLengthZero)或者柔性数组,其中cha......
  • 数据表删除DROP TRUNCATE DELETE区别
    总的来说,DROP用于删除整个数据库对象(表结构和数据全部删除),DELETE用于删除表中的数据,而TRUNCATE也是删除表中的数据,但比DELETE更快,且无法指定条件删除。根据需求,选择适当的命令来删除数据或对象。 DROP:1.DROP用于删除数据库对象,例如表(table)、索引(index)、视图(view)等。2......