本章节承接上一篇博客点击
下面展示一些 逆置
。
void Reverse(SqList L) {
ElemType temp;
for (int i = 0; i < L.length / 2; i++) {
temp = L.data[i];
L.data[i] = L.data[L.length - i - 1];
L.data[L.length - i - 1] = temp;
}
}
下面展示一些 查询更改位序
。
void SearchExchangeInsert(ElemType A[] , ElemType x, SqList L)
{
int low = 0, high = L.length - 1, mid; int t;
while (low <= high) {
mid = (low + high) / 2;
if (A[mid] == x) break;
else if (A[mid] high) {
int i;
for ( i = L.length-1 ; i > high; i--)
A[i + 1] = A[i];
A[i] = x;
}
}
原代码
下面展示一些 内联代码片
。
typedef struct {
ElemType *data;
int MaxSize , length;
}SqList;
/*----------------------------------------------------------------------------------------------------
1.设计一个高效算法,将顺序表L得所有元素逆置,要求算法的空间复杂度为O(1)
------------------------------------------------------------------
算法思想:扫描顺序表L得前半部分元素,对于元素L.data[i](0<=i<L.length/2),将其后半部分得对应元素L.data[L.length-i-1]进行交换。
---------------------------------------------------------------------------------------------------
*/
void Reverse(SqList L) {
ElemType temp;
for (int i = 0; i < L.length / 2; i++) {
temp = L.data[i];
L.data[i] = L.data[L.length - i - 1];
L.data[L.length - i - 1] = temp;
}
}
/*----------------------------------------------------------------------------------------------------
2.线性表(a1,a2,...,an)中的元素递增有序且按顺序存储于计算机内。要求设计一算法,完成用最少时间在表中查找数值为x
的元素,若找到则将其后继元素位置相交换,若找不到则将其插入表中并使表中元素递增有序
---------------------------------------------------------------------------------------------------
解放思想:顺序存储的线性表递增有序,可以顺序查找,也可以折半查找,题目要求“用最少的时间在表中查找数值为x的元素”,所以这
里使用的折半查找
---------------------------------------------------------------------------------------------------
*/
void SearchExchangeInsert(ElemType A[] , ElemType x, SqList L)
{
int low = 0, high = L.length - 1, mid; int t;
while (low <= high) {
mid = (low + high) / 2;
if (A[mid] == x) break;
else if (A[mid] high) {
int i;
for ( i = L.length-1 ; i > high; i--)
A[i + 1] = A[i];
A[i] = x;
}
}
int main(void)
{
SqList L; ElemType e = 1;;
L.length = 11;
L.data = (ElemType*)malloc(sizeof(ElemType)*InitSize);
for (int i = 0; i < L.length; i++)
L.data[i] = i;
for (int i = 0; i < L.length; i++)
printf("%d ", L.data[i]);
printf("\n%d\n", L.length);
Reverse(L);
for (int i = 0; i < L.length; i++)
printf("%d ", L.data[i]);
printf("\n%d", L.length);
printf("\n查询11,并置换后一位,找不到 就插入应在的递增顺序位置:\n");
Reverse(L);
L.data[5] = 7;
L.data[6] = 7;
SearchExchangeInsert(L.data,5,L);
for (int i = 0; i < L.length; i++)
printf("%d ", L.data[i]);
printf("\n%d\n", L.length);
getchar();
getchar();
return 0;
}
工程地址:后续更新
sf9090 原创文章 19获赞 64访问量 9665 关注 私信 展开阅读全文