氣泡排序和引用型別
專案中資料需要排序,自己寫了個冒泡。
寫完後發現了引用型別和值型別的差異。值型別作為引數時,不會改變原來的值,引用型別作為引數時,會改變原來的值。跟C語言中的傳值,傳地址類似。
引用型別:使用者自定義的類,介面,委託,字串,陣列,object,dynamic
官網連結如下:http://msdn.microsoft.com/zh-cn/library/490f96s2.aspx
氣泡排序的程式碼如下:
呼叫方法
protected void btnSort_Click(object sender, EventArgs e)
{
int[] intArray = new int[] { 10, 50, 9, 3, 7, 5, 6, 12, 3, 7, 92 };
int[] intSorted= SortASC(intArray);
int[] DESC = SortDESC(intArray);
}
升序
private int[] SortASC(int[] intArray)
{
int intTemp = 0;
int[] tempArray = new int[intArray.Length];
for (int i = 0; i < intArray.Length; i++)
{
tempArray[i] = intArray[i];
}
//tempArray= intArray;
for (int i = 0; i < tempArray.Length; i++)
{
for (int j = i; j < tempArray.Length; j++)
{
if (tempArray[i] > tempArray[j])
{
intTemp = tempArray[i];
tempArray[i] = tempArray[j];
tempArray[j] = intTemp;
}
}
}
return tempArray;
}
降序
private int[] SortDESC(int[] intArray)
{
int intTemp = 0;
int[] tempArray = intArray;
for (int i = 0; i < tempArray.Length; i++)
{
for (int j = i; j < tempArray.Length; j++)
{
if (tempArray[i] < tempArray[j])
{
intTemp = tempArray[i];
tempArray[i] = tempArray[j];
tempArray[j] = intTemp;
}
}
}
return tempArray;
}
問題:升序執行完畢後,沒有改變原來陣列的順序,降序執行完畢後,原來的陣列也跟著變了。
經對比發現 int[] tempArray = intArray;這條語句是把引數的地址直接傳遞給新宣告的變數。因此,函式的返回值型別可以為void。
相關文章
- 選擇排序和氣泡排序排序
- 氣泡排序和選擇排序排序
- 排序——氣泡排序排序
- 氣泡排序排序
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- 排序之氣泡排序排序
- 排序:氣泡排序&快速排序排序
- Go實現氣泡排序和快速排序Go排序
- 氣泡排序和選擇排序詳解排序
- 氣泡排序和選擇排序流程圖排序流程圖
- js氣泡排序JS排序
- 氣泡排序-fusha排序
- 氣泡排序演示排序
- Shell氣泡排序排序
- d氣泡排序排序
- 氣泡排序正解排序
- JavaScript氣泡排序JavaScript排序
- java氣泡排序Java排序
- 氣泡排序 java排序Java
- php氣泡排序PHP排序
- Java 氣泡排序Java排序
- Javascript 氣泡排序JavaScript排序
- 氣泡排序(Java)排序Java
- 容器氣泡排序排序
- 氣泡排序1排序
- 氣泡排序法排序
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 基本排序之氣泡排序排序
- 排序:交換排序——氣泡排序法排序
- go 實現氣泡排序和插入排序Go排序
- 氣泡排序筆記排序筆記
- js氣泡排序動畫JS排序動畫
- 陣列氣泡排序陣列排序
- 淺析氣泡排序排序
- python氣泡排序Python排序
- 氣泡排序 bubble sort排序
- 【筆記】氣泡排序筆記排序
- 淺談氣泡排序排序