C 將一維陣列從小到大進行排序

2021-09-28 16:40:36 字數 957 閱讀 9191

1.先放段簡單**

void

swip

(int data1,

int data2)

intmain()

是要交換一下兩個資料的位置。那麼我們看一下執行結果3,4並沒有改變。

2.再放一段**

void

swip

(int

* data1,

int* data2)

看一下執行結果,4,3實現了我們想要的結果。

為什麼會這樣呢?

1.在第一段**中,data1和data2是已經定義好的形參,a和b是實參,函式只是改變了內部形參,並未影響到函式外部的實參,所以在主函式中列印a和b並未發生變化。

2.為什麼第二段**就有了變化?因為第二段**使用了指標變數,直接獲取了實參的位址,已經定義好的實參是無法改變的,除非你重新賦值。但是實參的位址是可以挪動的。所以第二段**就是挪了一下兩個實參的位置,進而實現了目的。

已知乙個陣列,將其按照從小到大進行排列。

// 對輸入陣列進行排序

void

arange

(int

* arr,

int num)}}

intmain()

;int num =5;

// 當在確定最大值後,將最大值置於最右側,對剩下的進行再次排序。

for(

int j = num; j >=

1; j--

)for

(int i =

0; i < num; i++

)return0;

}

結果

60

7475

8090

氣泡排序(從小到大)

氣泡排序是一種極其簡單的排序演算法,也是我所學的第乙個排序演算法。它重複地走訪過要排序的元素,一次比較相鄰兩個元素,如果他們的順序錯誤就把他們調換過來,直到沒有元素再需要交換,排序完成。這個演算法的名字由來是因為越小 或越大 的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算法的運作如下 比較相鄰...

c 實現快速排序 從小到大

從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽 partition 操作 遞迴地 recursive 把小於基準值元素的子數列和...

氣泡排序詳解(從小到大)

實現 將數列中的第乙個元素和第二個元素比較數值大小,若第乙個元素比第二個元素大,則交換位置。然後再將第二個元素和第三個元素比較數值大小,第三個元素和第四個元素比較 依次不斷地比較,交換。不斷迴圈比較,直到不再發生交換,這就表明排序已完成,此時得到就是乙個有序數列。簡單來說就是不斷迴圈比較數列中相鄰元...