[toc]
getRandomArr01.cpp; getRandomArr02-writeToFile.cpp; getRandomArr03-readFileToArr.cpp;
写文件的基本操作
#include <fstream>
std::ofstream outputFile(filename); // 创建输出文件流
if (!outputFile.is_open()) { // 检查文件是否成功打开
std::cerr << "Error opening file: " << filename << std::endl;
return;
}
for (int i = 0; i < size; ++i) {
int num = dis(gen); // 生成随机数
outputFile << num << " "; // 将随机数写入文件
}
outputFile.close(); // 关闭文件流读文件的基本操作
// 创建输入文件流
// 检查文件是否成功打开
// 从文件中逐行读取数字
// 关闭文件流
#include <fstream>
std::ifstream inputFile(filename); // 创建输入文件流
if (!inputFile.is_open()) { // 检查文件是否成功打开
std::cerr << "Error opening file: " << filename << std::endl;
return {};
}
std::vector<int> randomArray;
int num;
while (inputFile >> num) { // 从文件中逐行读取数字
randomArray.push_back(num); // 将数字存储到数组中
}
inputFile.close(); // 关闭文件流[0,j] 是已经排好序的元素; [i,n-1]是没有排好序的元素; 需要在[0,j]中找到元素arr[i],的出入位置; 在查找过程中,后移比arr[i]的元素;
void insertSort(vector<int>& arr, int n)
{
int tmp, j;
for(int i = 1; i < n; ++i) {
j = i-1;
tmp = arr[i];
while(j>=0 && tmp < arr[j]) {
arr[j+1] = arr[j];
--j;
}
arr[j+1] = tmp;
}
}寻找未排序部分的最小值,然后交换到未排序数组的第一个元素;
void selectSort(vector<int>& arr, int n)
{
int k;
for(int i = 0; i < n; ++i) {
k = i;
for(int j = i+1; j < n; ++j) {
if(arr[j] < arr[k]) k = j;
}
swap(arr[i], arr[k]);
}
}
冒泡排序需要进行n-1轮; 每轮冒泡把最大值后移到已排序部分;
void bubleSort(vector<int>& arr, int n)
{
for(int i = 0; i < n-1; ++i) {
for(int j = 1; j < n-i; ++j) {
if(arr[j-1] > arr[j]) swap(arr[j-1], arr[j]);
}
}
}