幾種簡單的C語言排序方式(2)

2021-10-13 23:19:53 字數 1219 閱讀 9719

原理:取排序數的其中乙個元素(哨兵),從左右兩邊開始遍歷,左邊找到大於(或小於)哨兵元素的記錄,右邊找到小於(或大於)哨兵元素的記錄,將他倆進行交換。每次得到左邊全都小於(或大於)哨兵元素的序列,右邊得到全都大於(或小於)哨兵元素的序列,遞迴之後得到最後排序

void

quick_sort

(int

*arr,

int size)

quick_sort

(arr,left)

;quick_sort

(arr+left,size-left);}

intmain()

;int size =

sizeof

(arr)

/sizeof

(arr[0]

);quick_sort

(arr,size)

;for

(int i=

0;i)//遍歷

printf

("%d "

,arr[i]);

printf

("\n");

return0;

}

結果如下:

1、將待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當成是未排序序列;

2、取出下乙個元素,在已經排序的元素序列中從後向前掃瞄;

3、如果該元素(已排序)大於新元素,將該元素移到下一位置;

4、重複步驟3,直到找到已排序的元素小於或者等於新元素的位置;

5、將新元素插入到該位置後;

6、重複步驟2~5。

void

insert_sort

(int

*arr,

int size)

arr[p+1]

= q;

//向後插入}}

intmain()

;int size =

sizeof

(arr)

/sizeof

(arr[0]

);insert_sort

(arr,size)

;for

(int i=

0;i)//遍歷

printf

("%d "

,arr[i]);

printf

("\n");

return0;

}

結果如下:

簡單排序的幾種方式

執行方式 外層for迴圈定義迴圈最大上限,每次迴圈下減 內層for迴圈,從0到外層迴圈的最大值,進行遍歷 核心 if 條件判斷,將相鄰的兩個陣列進行交換 class change foreach int item in arr class program change a newchange arr...

C語言中幾種簡單的入門排序

1.排序中注意數值與位置的對應關係 i與a i 2.arr 0 為第乙個值,arr n 1 為最後乙個值 實現原理 1 對一組陣列 有n個數 按由前往後,兩個兩個進行比較排序。結果使得最後乙個數是這組陣列最大的數。2 對 1 中已排過一次的陣列進行再一次如 1 的排序,其中已排好的最大的那個數不考慮...

c語言幾種排序方法

1.將輸入的一串數字存入陣列中,可先用字串的形式輸入,再通過轉化成整型數存入陣列中 int len 0,tmp 0 int a maxsize char string 100 printf 請輸入任意個數的整數,以回車結束 n gets string char str string while st...