[問題] 新手請教
小弟用C++ , compiler使用codeblocks
在寫selection sort的時候
遇到了一個奇怪的問題(跟selection sort無關)
一般而言傳參數的方式在C++中有pass by value, by address, by reference三種
在以下程式碼中我是直接用pass by value把要排序的陣列(b陣列)傳進去
照理說,在主程式的b陣列應該不會有任何改變阿
(學校老師教,要影響到外部的變數只有透過by address跟byreference)
但build and run之後,我的b陣列還是神奇地被排序好了
請問為何會這樣? 還有如果要改為pass by reference的話要怎麼改
感激不盡^_^
#include <iostream>
using namespace std;
void SelecteSort(int data[],int length)
{
int start=0;
while(start!=length)
{
int j=0;
for(int i=start;i<=length;i++)
{
if(data[i]<data[j])
j=i;
}
int temp=data[start];
data[start]=data[j];
data[j]=temp;
start++;
}
}
int main(int argc, char *argv[])
{
int b[]={1,12,54,564,54,14,224,224,34,125,10,11,8,5,1115};//15個
SelecteSort(b,14);
for (int i=0;i<15;i++)
cout<<b[i]<<",";
cout<<endl;
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.244.44.20
推
12/22 14:36, , 1F
12/22 14:36, 1F
→
12/22 14:37, , 2F
12/22 14:37, 2F
→
12/22 14:37, , 3F
12/22 14:37, 3F
→
12/22 14:48, , 4F
12/22 14:48, 4F
→
12/22 14:49, , 5F
12/22 14:49, 5F
→
12/22 17:06, , 6F
12/22 17:06, 6F
→
12/22 17:07, , 7F
12/22 17:07, 7F
→
12/22 17:08, , 8F
12/22 17:08, 8F
推
12/22 20:53, , 9F
12/22 20:53, 9F
→
12/23 00:43, , 10F
12/23 00:43, 10F
→
12/23 15:18, , 11F
12/23 15:18, 11F
→
12/23 19:46, , 12F
12/23 19:46, 12F
噓
12/24 17:17, , 13F
12/24 17:17, 13F
討論串 (同標題文章)