已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为t型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)c实现。

/********************************************************************************************************
*
*	file name:	Zqh_splist_4.22.1.c
* 	author	 :	[email protected]
* 	date	 :	2024/04/22
* 	function :	已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为t型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。
*	note	 :	考研题
*	
*  Copyright (c)  2023-2025   [email protected]    All right Reserved
* ******************************************************************************************************/




#define MAX_SIZE 100

// 定义顺序表结构体
typedef struct {
    int data[MAX_SIZE];
    int length;
} SeqList;

//优化前
//递增排序      
void  SeqList_Insert(SeqList *L,int x)
{
	int temp = -1; //记录待插入元素的下标

	//遍历顺序表,找到插入位置,比较元素
	for (int i = 0; i <= last; ++i)
	{
		if (x < L[i])
		{
			temp = i;
			break;
		}
	}

	if( -1 == temp)
	{
		L[last+1] = x;
		return;
	}

	//把待插入位置的后继元素向后移动
	for (int i = last; i >= temp; i--)
	{
		L[i+1] = L[i];
	}

	L[temp] = x;
}



// 优化后
// 在递增有序的顺序表中插入元素 x
void SeqList_Insert(SeqList *L, int x) {
    int i, j;
    for (i = 0; i < L->length; i++) {
        if (L->data[i] >= x) {
            break;
        }
    }
    for (j = L->length; j > i; j--) {
        L->data[j] = L->data[j - 1];
    }
    L->data[i] = x;
    L->length++;
}

//在算法检测时,需要找特殊的情况,列如:0  表头  表尾  边界值

热门相关:学霸,你女朋友掉了   首席的亿万老婆   来自异世界的诺诺   重生全能悍妻:张狂大小姐   恐怖复苏