2014-09-29 70 views
-2

我是新来的C++,我有一个排序有rand()函数生成的随机值的数组的问题。 数组长度为100,数值由0到9的随机数填充(0,1,2,3,4,5,6,7,8,9)。排序随机值数组由数值递增

我已经成功确定数组的值,但仍然失败时,我想基于它的值递增排序数组。由此,这意味着当我打印数组值时,它可能不会被它的索引排序,而是被它的值所排序。

像这样:

X [10] = 0;

X [1] = 1;

X [60] = 2; ...等等直到X [99] = ...

这里是确定值并对其进行排序的代码,我在这里有什么错误?请帮助..

int length= 100; 
X = new int[length]; 

int i; 
int j; 
int temp; 


//determining the array value 
for (i = 0; i < length; i++) { 
    X[i] = rand() % 10; 
} 

//sorting 
for (i = 0; i < length; i++) { 
    for (j = 0; j < length; j++) { 

     if (X[i] < X[j]) { 
      temp = X[j]; 
      X[j] = X[i]; 
      X[i] = temp; 
     } 

    } 
} 

//print the array 
for (i = 0; i < length; i++) { 
    cout << "X[" << i << "] = " << X[i] << "\n"; 
    Sleep(10); 
} 

以上代码将不打印排序按价值计算,其印刷而成的指数排序递增的阵列,而不是由它就像我上面所说的要值。

请递给我解决这个,

在此先感谢

+2

如果这是一个任务或者有一个很好的理由让你写你自己的排序,你应该提到的是,在问题。否则,使用'std :: sort'。 – juanchopanza 2014-09-29 06:27:26

+0

@juanchopanza它不是一个任务,它只是我想学习C++排序我的自我,但我得到了这个问题。我将对这个问题进行编辑 – codelop 2014-09-29 06:31:16

+0

在开始排序之前,将值放入数组*中。 – molbdnilo 2014-09-29 06:33:53

回答

0

您正在尝试初始化,并在同一循环数组排序。

- 首先初始化数组:

for (i = 0; i < length; i++) { 
    X[i] = rand() % 10; 
} 

那么此数组排序:(以下排序方法是插入排序,如果你想加快你可以使用计数排序,因为该数组仅包含数字的过程。 )

for (i = 0; i < length; i++) { 
for (j = i+1; j < length; j++) { 
    if (X[i] > X[j]) { 
     temp = X[j]; 
     X[j] = X[i]; 
     X[i] = temp; 
    } 

} 

}

+0

是的,我所做的,完全取决于您在此处编写的代码。那么,你有没有想法如何克服这个问题? – codelop 2014-09-29 06:38:57

+0

@codelop仔细看看他的第二个循环和if语句。 – IllusiveBrian 2014-09-29 06:46:19

+0

我刚把你的循环分成2个不同的部分,这是主要的问题。你正试图在一个方面完成这两个步骤。 – Hakes 2014-09-29 06:48:46