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