将直接插入排序、直接选择排序、冒泡排序、顺序查找函数封装到第9章的数组类中,作为成员函数。实现并测试这个类。
时间: 2024-02-07 15:04:12 浏览: 51
实现数组的直接插入排序
好的,我明白了你的问题。下面是实现步骤:
1. 首先,在数组类中添加私有成员变量来存储数组元素。
2. 然后,实现一个构造函数,用于初始化数组。
3. 接下来,实现直接插入排序、直接选择排序、冒泡排序、顺序查找函数作为数组类的公有成员函数。
4. 最后,编写测试代码对数组类进行测试。
下面是代码实现:
```cpp
#include <iostream>
using namespace std;
const int MAX_SIZE = 100;
class Array {
private:
int data[MAX_SIZE];
int size;
public:
Array() {
size = 0;
}
void insert(int value) {
if (size >= MAX_SIZE) {
cout << "Error: Array is full!" << endl;
return;
}
data[size] = value;
size++;
}
void directInsertSort() {
for (int i = 1; i < size; i++) {
int tmp = data[i];
int j = i - 1;
while (j >= 0 && data[j] > tmp) {
data[j + 1] = data[j];
j--;
}
data[j + 1] = tmp;
}
}
void directSelectSort() {
for (int i = 0; i < size - 1; i++) {
int min_index = i;
for (int j = i + 1; j < size; j++) {
if (data[j] < data[min_index]) {
min_index = j;
}
}
if (min_index != i) {
int tmp = data[i];
data[i] = data[min_index];
data[min_index] = tmp;
}
}
}
void bubbleSort() {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (data[j] > data[j + 1]) {
int tmp = data[j];
data[j] = data[j + 1];
data[j + 1] = tmp;
}
}
}
}
int seqSearch(int key) {
for (int i = 0; i < size; i++) {
if (data[i] == key) {
return i;
}
}
return -1;
}
void display() {
for (int i = 0; i < size; i++) {
cout << data[i] << " ";
}
cout << endl;
}
};
int main() {
Array a;
a.insert(3);
a.insert(2);
a.insert(5);
a.insert(1);
a.insert(4);
a.display(); // 3 2 5 1 4
a.directInsertSort();
a.display(); // 1 2 3 4 5
a.directSelectSort();
a.display(); // 1 2 3 4 5
a.bubbleSort();
a.display(); // 1 2 3 4 5
cout << a.seqSearch(3) << endl; // 2
return 0;
}
```
这个程序创建了一个名为 `Array` 的类,我们可以使用它来存储和排序一个整数数组。我们可以使用 `insert` 函数向数组中添加元素,然后使用 `directInsertSort`、`directSelectSort` 和 `bubbleSort` 函数对数组进行排序,使用 `seqSearch` 函数来查找数组中的元素。最后,使用 `display` 函数来显示数组中的元素。
希望对你有所帮助!
阅读全文