2 appxsl appxsl 于 2014.10.09 17:18 提问

初级 C++ 学习者来求教,编程中排序题目遇到的问题,求解答
c++

题目是用选择法对10个整数进行由小到大排序。

我的编程是:
#include
using namespace std;
int main()
{
void select_sort(int array[], int n);
int a[10], i;
cout << "输入原始数组:" << endl;
for (i = 0; i < 10; i++)
cin >> a[i];
cout << endl;
select_sort(a, 10);
cout << "排序好的数组:" << endl;
for (i = 0; i < 10; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
void select_sort(int array[], int n)
{
int i, j, t;
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < n;j++)
if (array[j] < array[i])
t = array[j]; array[j] = array[i]; array[i] = t;
}
}

参考答案给的编程:
#include
using namespace std;
int main()
{
void select_sort(int array[], int n);
int a[10], i;
cout << "输入原始数组:" << endl;
for (i = 0; i < 10; i++)
cin >> a[i];
cout << endl;
select_sort(a, 10);
cout << "排序好的数组:" << endl;
for (i = 0; i < 10; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
void select_sort(int array[], int n)
{
int i, j,k, t;
for (i = 0; i < 10; i++)
{
k = i;
for (j = i + 1; j < n;j++)
if (array[j] < array[i])
k = j;
t = array[k]; array[k] = array[i]; array[i] = t;
}
}

 不同点在于加粗斜体标记的地方。我的编程没有设置变量K,但是答案设置了。我个人觉得有没有K都无所谓啊,但是实际运行我的是错误的,答案是正确的。我很想知道这个K起到什么作用?为什么非要弄个K呢?求大神的详细解答啊

1个回答

ZHUJIANWEILI4
ZHUJIANWEILI4   2014.10.09 21:09

答案给的也不对

#include
using namespace std;
int main()
{
void select_sort(int array[], int n);
int a[10], i;
cout << "输入原始数组:" << endl;
for (i = 0; i < 10; i++)
cin >> a[i];
cout << endl;
select_sort(a, 10);
cout << "排序好的数组:" << endl;
for (i = 0; i < 10; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
void select_sort(int array[], int n)
{
int i, j,k, t;
for (i = 0; i < 10; i++)
{
k = i;
for (j = i + 1; j < n;j++)
///if (array[j] < array[i]) 这里应该是把array[i]该为array[k]的
k = j;
t = array[k]; array[k] = array[i]; array[i] = t;
}
}

若是LZ没有使用k变量,那么应该是
for(j=i+1;j<n;j++)
{
for(array[j]<array[i])
{
t = array[j]; array[j] = array[i]; array[i] = t;
}
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!