排序後卻沒成功>.<

Home Home
引用 | 編輯 minieudaemon
2008-04-17 14:51
樓主
推文 x0
各位大大
題目是要將兩個一維整數陣列合併成一個由小到大的陣列
小弟的作法是先合併後再用氣泡排序去排...我合併成num後
是正常的...但帶入bubble函數後...卻沒有排序..
請教各位大大...程式中那裡出錯了呢??...小弟剛學C...希望
各位大大能多多指點....


#include <iostream>
#include <cstdlib>
using namespace std;
void bubble(int a[]); //氣泡排序
int main(void)
{
int data1={8,10,18,4,30};
int data2={7,8,31,52,35};
int i,j,k;
int num;
for(i=0,k=0;i<5,k<5;i++,k++) //先將兩個陣列合併到num陣列
num=data1;
for(j=0,k=5;j<5,k<10;j++,k++)
num=data2;

cout << "目前陣列合併後..新陣列:";
for(k=0;k<10;k++)
cout << ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 rchockxm
2008-04-17 19:47
1樓
  
由大到小排列:
複製程式
#include <iostream>
#include <cstdlib>

using namespace std;
int main(void)
{
  int data1[5]={8,10,18,4,30};
  int data2[5]={7,8,31,52,35};
  int i,j,k;
  int num[10];
  
  for(i=0,k=0;i<5,k<5;i++,k++)     //先將兩個陣列合併到num陣列 
    num[k]=data1[i];
    
  for(j=0,k=5;j<5,k<10;j++,k++)
    num[k]=data2[j];
    
  cout << "目前陣列合併後..新陣列:";
  for(k=0;k<10;k++)
  {
    cout << num[k] << " ";
  }  
    cout << endl;           //合併後列出是正常的 
  
  int temp;  
  for(i=0;i<10;i++)
       {
              for(j=0;j<10;j++)
              {
                     if(num[j+1]>num[j])
                     {
                            temp=num[j+1];
                            num[j+1]=num[j];
                            num[j]=temp;
                     }
              }   
       }   
  
  cout << "經排序後 :";
  for(k=0;k<10;k++)   
  {
  cout << num[k] << " ";
  }
  cout << endl;
      
  system("pause");
} 

Dev C++ 4.9.9.2 測試通過
有些地方我是調試時改的
有些是我拿掉的
大大可能還要稍微修一下 表情

獻花 x1
引用 | 編輯 minieudaemon
2008-04-18 00:30
2樓
  
謝謝大大的解答^^
大大把我原本設的bubble 函數改掉...改成在主程式中...^^
我剛剛run了一下....我的是Dev C++ 4.9.8.0....跑的結果是
是排序了...不過好像前面還有一些不太懂的數字...嗯..待會再
去仔細一行一行的看....感謝大大的回答....

獻花 x0