用c++算法实现随机产生1000个整数(要求互不相同)存储于顺序表中,并将顺序表变为有序顺序表且顺序表采用数组表示
时间: 2024-05-05 16:22:32 浏览: 105
以下是用c++实现随机产生1000个互不相同的整数,并将其存储于顺序表中,最后将顺序表变为有序顺序表的代码:
```c++
#include <iostream>
#include <ctime>
using namespace std;
const int MAXSIZE = 1000; // 定义最大长度
struct SqList {
int data[MAXSIZE];
int length;
};
// 初始化顺序表
void InitList(SqList& L) {
L.length = 0;
}
// 插入元素
bool ListInsert(SqList& L, int i, int e) {
if (i < 1 || i > L.length + 1 || L.length == MAXSIZE) {
return false;
}
for (int j = L.length; j >= i; j--) {
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
L.length++;
return true;
}
// 打印顺序表
void PrintList(SqList L) {
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << " ";
}
cout << endl;
}
// 生成随机数
int GetRandom(int min, int max) {
static bool flag = false;
if (!flag) {
srand((unsigned int)time(NULL));
flag = true;
}
return rand() % (max - min + 1) + min;
}
// 生成互不相同的随机数
void GenerateRandomSeq(SqList& L) {
for (int i = 0; i < MAXSIZE; i++) {
int e = GetRandom(1, MAXSIZE * 10);
for (int j = 0; j < i; j++) {
if (L.data[j] == e) {
i--;
break;
}
}
ListInsert(L, i + 1, e);
}
}
// 冒泡排序
void BubbleSort(SqList& L) {
for (int i = 0; i < L.length - 1; i++) {
for (int j = 0; j < L.length - i - 1; j++) {
if (L.data[j] > L.data[j + 1]) {
swap(L.data[j], L.data[j + 1]);
}
}
}
}
int main() {
SqList L;
InitList(L); // 初始化顺序表
GenerateRandomSeq(L); // 生成随机数
cout << "随机生成的顺序表:";
PrintList(L); // 打印顺序表
BubbleSort(L); // 冒泡排序
cout << "排序后的顺序表:";
PrintList(L); // 打印顺序表
return 0;
}
```
其中,我们使用了冒泡排序算法来将顺序表变为有序顺序表。
阅读全文