使用c语言设计一个算法,判断顺序表L中所有元素是否是递增有序的
时间: 2024-05-13 07:20:43 浏览: 11
思路:
遍历顺序表L中的每一个元素,如果当前元素比上一个元素小,则不是递增有序的,返回false;如果遍历完所有元素都没有返回false,则说明顺序表L是递增有序的,返回true。
代码实现:
```
#include <stdio.h>
#include <stdbool.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
bool isSorted(SqList L) {
int i;
for (i = 1; i < L.length; i++) {
if (L.data[i] < L.data[i-1]) {
return false;
}
}
return true;
}
int main() {
SqList L = {{1, 3, 5, 7, 9}, 5};
if (isSorted(L)) {
printf("顺序表L是递增有序的\n");
} else {
printf("顺序表L不是递增有序的\n");
}
return 0;
}
```
相关问题
已知顺序表L中的元素递增有序排列,设计算法将元素x插入到表L中并保持表L仍递增有序,用c语言写出源程序
```c
void insert(int x, int *L, int len){
int i;
for(i = len-1; i >= 0; i--){
if(L[i] > x){
L[i+1] = L[i];
}
else{
break;
}
}
L[i+1] = x;
}
```
说明:该算法从后往前遍历表L,若当前元素比待插入元素大,则将该元素后移,直到找到第一个小于等于待插入元素的位置,将待插入元素插入该位置后面。
1、设顺序表L中的数据元素递增有序。试写一算法,将数据元素x插入到顺序表L的适当位置,以保持该表的有序性。 c语言写
算法如下:
```
void insert(int L[], int len, int x) {
int i = 0, j = len - 1;
while (i <= j) {
int mid = (i + j) / 2;
if (x == L[mid]) {
i = mid + 1;
break;
} else if (x < L[mid]) {
j = mid - 1;
} else {
i = mid + 1;
}
}
for (int k = len; k > i; k--) {
L[k] = L[k - 1];
}
L[i] = x;
}
```
该算法的时间复杂度为O(logn),其中n为顺序表L的长度。