2

我无法理解这个伪代码,并将其实现到我的程序中。任何人都可以更好地解释它或向我展示代码的外观吗?谢谢。

A - an array containing the list of numbers
numItems - the number of numbers in the list

for i = 0 to numItems - 1
    for  j = i+1 to numItems               
        if A[i] > A[j]
            // Swap the entries
            Temp = A[i]
            A[i] = A[j]
            A[j] = Temp          
        End If    
    Next j
Next i 
4

3 回答 3

6

好吧,让我们把伪代码翻译成伪英文。

A - an array containing the list of numbers
numItems - the number of numbers in the list

for i = 0 to numItems - 1
    for  j = i+1 to numItems               
        if A[i] > A[j]
            // Swap the entries
            Temp = A[i]
            A[i] = A[j]
            A[j] = Temp          
        End If    
    Next j
Next i

可能会读

Count through each item, from the beginning to the end, calling it X
  While considering item X, count through each item after it, from just
  after X to the end, calling it Y
    If X is bigger than Y, swap the two, temporarily storing X in Temp
      so it doesn't get lost when we copy Y into X.  Copy Y into X, and then
      Copy the temporarily stored old value of X (remember it is in Temp)
      back into Y.  Now the values of X and Y are swapped (so X is now smaller
      than Y)

现在你的工作是用代码编写它。

于 2012-06-01T15:02:00.890 回答
1

算法的名称告诉你很多关于它的信息。它首先选择列表中最小的元素并将其放在第一个位置。然后它选择第二个并将其放入第二个,等等。

你如何找到最小的元素?好吧,您查看列表,如果您正在查看的元素小于列表开头的元素,请将其交换。

你如何找到第二小的?您知道最小的元素已经在第一个位置。所以这意味着第二小的必须是第二个元素和列表末尾之间的最小元素。因此,您再次进行适当的交换。

起泡、冲洗并重复。

如果您想知道如何交换元素。想想你将如何手工完成。你拿起元素 1 并将其放在一个安全的地方,将元素 2 放在元素 1 的旧位置,然后将元素 1 放在元素 2 的旧位置。使用的临时变量将代表您放置元素 1 的安全位置。

Wikipedia上有一篇不错的文章。

于 2012-06-01T14:54:09.773 回答
0

如果您只想将整数数组按特定顺序排序,并且您的教授不介意您使用实用程序类,那么Go Here

但是,如果您需要自己编写排序算法,那么Go Here有解释和示例。

于 2012-06-01T15:01:22.017 回答