Datenstruktur_Probleme im Zusammenhang mit der Algorithmusimplementierungssequenztabelle_9

1. Problembeschreibung:

Die Elemente in der linearen Liste (a1, a2, a3, ..., an) sind in aufsteigender Reihenfolge und werden der Reihe nach im Computer gespeichert. Es ist erforderlich, einen Algorithmus zu entwerfen, um nach dem Element mit dem Wert zunehmend geordnet zu suchen.

2. Algorithmisches Denken:

Die Sequenztabelle wird in aufsteigender Reihenfolge gespeichert und kann sequentiell oder halbiert durchsucht werden. Die Frage erfordert „in kürzester Zeit das Element mit dem Wert x in der Tabelle finden.“ Hier sollten Sie eine binäre Suche verwenden.

3. Algorithmuscode:

void SearchExchangeInsert(ElemType A[],ELemType x)
{
    
    
	int low = 0,hight = n-1,mid;//low和high指向顺序表下界和上界的下标
	while(low <= high)
	{
    
    
		mid = (low + high) / 2;//找中间位置
		if(A[mid] == x)//找到x,退出while循环
			break;
		else if(A[mid] < x)//到中点mid的右半部去查
			low = mid + 1;
		else//到中点mid的左半部去查
			high = mid - 1;
	}//下面两个if语句只会执行一个
	if(A[mid] == x && mid != n-1)//若最后一个元素与x相等,则不存在与其后继交换的操作
	{
    
    
		t = A[mid];
		A[mid] = A[mid+1];
		A[mid+1] = t;
	}
	if(low > high)//查找失败,插入数据元素x
	{
    
    
		for(i = n-1;i > high;i--)
			A[i+1] = A[i];//后移元素
		A[i+1] = x;//插入x
	}//结束插入
}

おすすめ

転載: blog.csdn.net/qq_56866000/article/details/131957801