2015-04-20 123 views
1
#include <iostream> 
using namespace std; 
int main() 
{ 
    int i,sum=0,n; 
    int a[10]; 
    float avg; 
     cout<<"Enter how many numbers you want "; 
     cin>>n; 
     if (n>10) 
     n=10; 
      cout<<"Enter the numbers" << endl; 
       for (i=0;i<n;i++) 
        cin>>a[i]; 
       for (i=0;i<n;i++) 
        { 
         sum=sum+a[i]; 
        } 
         avg=sum/n; 
     cout<<"sum of array elements "<<sum << endl; 
     cout<<"average of array elements " <<avg << endl; 

int temp; 
    for (int i =0; i<n; i++) 
    { 
     for (int j=1; j<n; j++) 
     { 
      if (a[i] > a[j]) 
      { 
       temp = a[i]; 
       a[i]=a[j]; 
       a[j]=temp; 
      } 
     } 
    } 
cout << "The numbers in ascending order are:" << endl; 

for (int i =0; i<n; i++) 
    { 
     cout << a[i] << endl; 
    } 
return 0; 
} 

當我運行這個程序時,數字以不同的順序打印出來。爲什麼不打印升序編號

如果我使用數字1 2 3 4 5他們打印出1 5 4 3 2

一切運行正常。如何解決這個錯誤?

+1

你的排序算法不正確。例如,如果比較元素'a [4]'和'a [1]',會發生什麼? –

+0

我怎樣才能讓它比較所有的數字? – user3138302

+0

這種奇怪的插入排序工作不正確,你可以很容易地將其轉換爲冒泡排序 – maraca

回答

2

您的排序實施不正確。由於排序的想法是找到i個在每一步最小數,內環應該在i+1開始,而不是在1

for (int j=i+1; j<n; j++) 

Demo.