2015-01-09 117 views
-8

我不知道这段代码有什么问题,输出是{10,30,20,40,50,60,70,80,90,100}。选择排序C++?

#include <iostream> 
using namespace std; 

const int size = 10; 

void SS(int list[]) 
{ 
    int swap; 
    for (int i = 0; i < (size-1); i++) 
    { 
     int min = i; 
     for (int j = i + 1; j < size; j++) 
     { 
      if (list[min] > list[j]) 

      { 
       min = j; 
      } 

      if (min != i) 
      { 
       swap = list[i]; 
       list[i] = list[min]; 
       list[min] = swap; 
      } 
     } 
    } 
} 

void p(int list[]) 
{ 
    for (int i = 0; i < size; i++) 
    { 
     cout << list[i] << "\t"; 
    } 
} 

void main() 
{ 

    int list[size] = { 10,60,40,70,20,80,50,90,100,30}; 

    SS(list); 
    p(list); 

} 
+6

它看起来像你的文章大多是代码;请添加更多的细节。 – tux3 2015-01-09 23:34:49

+1

尝试使用更具人性化的风格来格式化您的代码,http://en.wikipedia.org/wiki/Programming_style – dynamic 2015-01-09 23:36:09

回答

2

您的交换操作嵌套1级太深。

如果你想格式化你的代码,这将是显而易见的。

下面是正确的代码:

#include <iostream> 
using namespace std; 

const int size = 10; 

void SS(int list[]) 
{ 
    int swap; 
    for (int i = 0; i < (size-1); i++) 
    { 
    int min = i; 
    for (int j = i + 1; j < size; j++) 
    { 
     if (list[min] > list[j]) 

     { 
     min = j; 
     } 
    } 

    if (min != i) 
    { 
    swap = list[i]; 
    list[i] = list[min]; 
    list[min] = swap; 
    } 
    } 
} 

void p(int list[]) 
{ 
    for (int i = 0; i < size; i++) 
    { 
    cout << list[i] << "\t"; 
    } 
} 

void main() 
{ 

    int list[size] = { 10,60,40,70,20,80,50,90,100,30}; 

    SS(list); 
    p(list); 

} 
+0

非常感谢。 – user4438677 2015-01-10 00:01:44

+4

从长远来看,调试和修复另一个OP代码并不是真的有用(因为其他用户可能会得到这种印象,我们一般会为他们做这件事),并且通过修复问题的根源(缺少调试,缺乏研究等)。请注意,您通过给出这样的答案(downvoted)来积极伤害本网站的质量! – 2015-01-10 01:04:15