c++输入输出排序
C++ Input Output Sorting
分配调用使用3个输入和3个输出文件,但现在我只尝试一个。程序应该包含一个函数模板,用于按升序对数组的值进行排序。该函数将接收一个无序数组并返回一个有序数组。该函数不应该执行任何输入或输出。
我的代码如下所示:
#include <iostream>
#include <iostream>
#include <fstream>
using namespace std;
ifstream inNumbers("intTestRead.txt");
ofstream outNumbers("intTestWrite.txt");
template<typename int[], typename int> void SelectionSort(int[], int);
void SelectionSort(int v[], int n)
{
int iMin;
for (int i = 0; i < n - 1; i++)
{
iMin = i;
for (int j = i + 1; j < n; j++)
{
if (v[j] < v[iMin])
{
iMin = j;
}
}
int aux = v[i];
v[i] = v[iMin];
v[iMin] = aux;
}
}
void main()
{
int data[100];
int i;
int length = 0;
if (!inNumbers)
cerr << "intTestRead.txt file could not be opened" << endl;
for (i = 0; i < 100 && inNumbers; ++i)
{
inNumbers >> data[i];
if (inNumbers)
{
length += 1;
}
SelectionSort(data, length);
outNumbers << data[i] << endl;
}
}
我主要用Java编程,现在刚开始用c++,我对模板和其他东西感到困惑。排序函数是教授给我们的。我的读取文件看起来像这样:
65 40 84 9 79 90 71 93 39 44
应该是这样的:
9 39 40 44 65 71 79 84 90 93
但是看起来是这样的:
65
65
84
84
84
90
90
93
93
93
-858993460
^^我知道,因为我在新行中使用了endl结果,但是相同数字的多次递归+ -85让我感到困惑。
不要在每次输入后调用排序函数。当所有的输入都准备好了就调用它。
类似:
void main()
{
int data[100];
int i;
int length = 0;
if (!inNumbers)
cerr << "intTestRead.txt file could not be opened" << endl;
for (i = 0; i < 100 && inNumbers; ++i)
{
inNumbers >> data[i];
if (inNumbers)
{
length += 1;
}
}
SelectionSort(data, length);
for (i = 0; i < length; ++i)
{
outNumbers << data[i] << endl;
}
}
又看了一遍,并使用了另一个选项:
#include <iostream>
#include <iostream>
#include <fstream>
#define NUMBERS 10
using namespace std;
ifstream inNumbers("intTestRead.txt");
ofstream outNumbers("intTestWrite.txt");
template <class T>
void Swap(T& A, T& B)
{
T temp;
temp = A;
A = B;
B = temp;
}
template <class T>
void SelectionSort(T A[], int N)
{
T min;
int j, k, minIndex;
for (k = 0; k < N; k++) {
min = A[k]; minIndex = k;
for (j = k + 1; j < N; j++) {
if (A[j] < min) { min = A[j]; minIndex = j; }
}
Swap(A[k], A[minIndex]);
}
}
void main()
{
int data[100];
int i = 0;
if (!inNumbers)
cerr << "intTestRead.txt file could not be opened" << endl;
for (i = 0; i < NUMBERS && inNumbers; ++i)
{
inNumbers >> data[i];
}
SelectionSort(data, NUMBERS);
for (int i = 0; i < NUMBERS; ++i)
outNumbers << data[i] << endl;
}
输入:65
40
84
9
79
90
71
93
39
44
输出:9
39
40
44
65
71
79
84
90
93
相关文章:
- 字符的输入/输出操作
- C++ 中文件输入输出中的长长 v/s int
- 要求用户输入C++输出文件名
- 在C++中重载输入/输出运算符
- 从用户获取输入/输出
- 如何选择waveIn/waveOut函数C++使用的输入/输出设备
- C++击球平均值程序使用输入/输出文件打印名称,平均值,最高/最低平均值时遇到麻烦
- 从 2 位输入输出 4 位数字年份
- 标准输入输出操作如何C++完成
- Windows 中应用程序的每秒输入/输出操作数
- 如何初始化可以设置为默认数组并将输入/输出作为数组的类函数?
- 输入/输出和类
- 使用 Octave GNU 访问输入/输出文件
- (C++)分解这个简单的输入/输出代码:
- TensorFlow模型:如何从原始爱好文件中识别输入/输出节点名称
- 干净取消在输入/输出调用中被阻止的 std::线程
- 将线程之间的标准输入/输出重定向
- 输入/输出异或字符串的 C++ 问题
- 在使用向量和排序输入值期间不显示输出
- c++输入输出排序