我試圖對這個隨機生成的陣列進行排序,但我的輸出不正確,它看起來像這樣:
sorted round: 0: 87
sorted round: 0: 78
sorted round: 0: 16
sorted round: 0: 94
sorted round: 0: 36
sorted round: 0: 93
sorted round: 0: 50
sorted round: 0: 22
sorted round: 0: 63
sorted round: 0: 28
sorted round: 0: 91
sorted round: 0: 60
sorted round: 0: 64
sorted round: 0: 27
sorted round: 0: 41
sorted round: 0: 73
sorted round: 0: 37
sorted round: 0: 12
sorted round: 0: 69
84
78
16
87
36
93
50
22
63
28
91
60
64
27
41
73
37
12
69 0
我已經在這作業了幾個小時,并且無法弄清楚我做錯了什么,任何幫助都將不勝感激。
#include <stdio.h>
#include <iostream>
#include <algorithm> // for std::find
#include <iterator> // for std::begin, std::end
using namespace std;
int main()
{
int random_array[20];
int i;
int j;
random_array[0]=rand()%(100-1 1) 1;
for (i=1; i<20;)
{
j= rand()%(100-1 1) 1;
bool exists;
exists = find(begin(random_array), end(random_array), j) != end(random_array);
if(!exists)
{
random_array[i]=j;
i=i 1;
}
else
{
;
}
}
int size=20;
i=0;
j=0;
int k =0;
for (i; i < size; i ) {
for (j; j < size - i; j )
{
for(k; k<20; k )
{
cout<<"sorted round: "<<j<<": "<<random_array[k]<<endl;
}
if (random_array[j] > random_array[j 1]) {
swap(random_array[j], random_array[j 1]);
}
else
{
;
}
}
}
for (i=0; i<20;i )
{
cout<<random_array[i]<<endl;
}
return 0;
}
輸出應該是一個名為 random_array 的排序陣列,我遇到的問題從這行代碼開始:
int size=20;
i=0;
j=0;
int k =0;
for (i; i < size; i ) {
uj5u.com熱心網友回復:
在這些嵌套的 for 回圈中
for (i; i < size; i ) {
for (j; j < size - i; j )
{
for(k; k<20; k )
{
cout<<"sorted round: "<<j<<": "<<random_array[k]<<endl;
}
if (random_array[j] > random_array[j 1]) {
swap(random_array[j], random_array[j 1]);
}
else
{
;
}
}
}
在最外層回圈的每次迭代中,變數j和變數都不會重置為 0k
for (i; i < size; i ) {
至少你應該寫
for (i = 0; i < size; i ) {
for (j = 0; j < size - i; j )
{
for(k = 0; k<20; k )
{
cout<<"sorted round: "<<j<<": "<<random_array[k]<<endl;
}
if (random_array[j] > random_array[j 1]) {
swap(random_array[j], random_array[j 1]);
}
else
{
;
}
}
}
請注意,程式在最外層回圈的第一次迭代中呼叫未定義的行為,即當i等于時,0因為在這個 if 陳述句中
if (random_array[j] > random_array[j 1]) {
random_array[j 1]當 j 相等時,運算式訪問陣列之外??的記憶體size - 1。
最好以 1 開始內部 for 回圈
for (j = 1; j < size - i; j )
{
并在 if 陳述句中寫入
if (random_array[j-1] > random_array[j]) {
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491055.html
下一篇:如何使用for回圈填充零矩陣?
