应用C++对一个txt文件中的数据采用插入排序的方式进行从小到大和从大到小的排序将结果输入到一个新的txt文件中
时间: 2024-04-16 21:28:04 浏览: 165
C++对txt文件的操作
3星 · 编辑精心推荐
您好!您可以使用以下的C++代码来实现对一个txt文件中数据的插入排序,并将排序结果写入到一个新的txt文件中:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
void insertionSort(vector<int>& arr, bool ascending) {
int n = arr.size();
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
if (ascending) {
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
} else {
while (j >= 0 && arr[j] < key) {
arr[j + 1] = arr[j];
j--;
}
}
arr[j + 1] = key;
}
}
int main() {
string inputFile = "input.txt";
string outputFileAscending = "output_ascending.txt";
string outputFileDescending = "output_descending.txt";
ifstream inFile(inputFile);
ofstream outFileAscending(outputFileAscending);
ofstream outFileDescending(outputFileDescending);
if (!inFile || !outFileAscending || !outFileDescending) {
cout << "Error opening file!" << endl;
return 1;
}
vector<int> data;
int num;
while (inFile >> num) {
data.push_back(num);
}
vector<int> ascendingData = data;
vector<int> descendingData = data;
insertionSort(ascendingData, true);
insertionSort(descendingData, false);
for (int i : ascendingData) {
outFileAscending << i << endl;
}
for (int i : descendingData) {
outFileDescending << i << endl;
}
cout << "Sorting complete. Results saved in " << outputFileAscending << " and " << outputFileDescending << endl;
inFile.close();
outFileAscending.close();
outFileDescending.close();
return 0;
}
```
在上述代码中,我们首先定义了一个`insertionSort`函数,用于实现插入排序。然后,在`main`函数中,我们打开输入和输出文件流,读取输入文件中的数据,并将其存储在一个`vector<int>`中。接下来,我们分别对原始数据进行从小到大和从大到小的排序,并将排序结果分别写入到对应的输出文件中。最后,关闭文件流并输出排序完成的消息。
请注意,您需要将输入文件名和输出文件名替换为实际使用的文件名。
希望对您有帮助!如有任何问题,请随时提问。
阅读全文