首页 > 其他分享 >在有序数组中插入一个数后仍然有序

在有序数组中插入一个数后仍然有序

时间:2022-11-06 18:12:17浏览次数:48  
标签:有序 int break 插入 length 数组 sizeof 数后

#include <stdio.h>
int main()
{
	int a[7] = {2, 5, 12, 32, 44, 57};
	int b = 20;
	int i;
	int j;
	int length;
	length = sizeof(a) / sizeof(int);
	
	printf("插入前的数组:"); 
	for(i=0; i<length; i++){
		printf("%-4d", a[i]);
	}
	printf("\n");
	
	//插入的相关操作
	if(b>a[5]){
		a[6] = b; 
	}else{
		for(i=0; i<length; i++){
			if(a[i]<b){
				continue;
			}else{
				for(j=5; j>=i; j--){
					a[j+1] = a[j];
				}
				a[j+1] = b;
			}
			break;
		} 
	} 
	
	printf("插入后的数组:"); 
	for(i=0; i<7; i++){
		printf("%-4d", a[i]);
	}
		
	return 0;
 } 

学习到:

  1. 编码思想
  • 考虑到插入输与数组的两种关系
    第一种
    1数组的数值全都小于插入数
    2直接把数插到最后的位置
    第二种
    1数组的数值有大于有小于(全小于也适用)
    2(遍历)找到数值大于插入数的位置,记录该位置
    3(循环移动)把后面的数往后移动(包括当前大于插入值的数)
    4把插入数插到记录的位置
    5结束
  1. 循环,if()else()和continue,break的混合使用
for(i=0; i<length; i++){
			if(a[i]<b){
				continue;
			}else{
				for(j=5; j>=i; j--){
					a[j+1] = a[j];
				}
				a[j+1] = b;
			}
			break;
		} 

虽然可以省略if() continue那块,但是这样些结构更清晰,完整
3. 求数组的长度
length = sizeof(数组名) / sizeof(数组类型\数组元素);

标签:有序,int,break,插入,length,数组,sizeof,数后
From: https://www.cnblogs.com/97rong/p/16863247.html

相关文章