国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

淺談PHP源碼二十六:PHP快速排序源碼實現的簡化

2020-03-22 19:46:07
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于淺談PHP源碼二十六:PHP快速排序源碼實現的簡化,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

淺談PHP源碼二十六:PHP快速排序源碼實現的簡化

這段時間在復習數據結構,有看到排序及經典的快速排序
于是有了看下PHP中實現排序的方式,在Zend目錄下我們可以看到zend_qsort.c文件及zend_qsort.h文件
這是PHP實現快速排序的文件所在
從代碼中我們可以看到,也許是為了兼容多種數據類型,所以其在交換及比較位置比較復雜,看起來也比較糾結,于是自己將
其中的類型全部換成int類型,得到簡化版本的PHP源碼中的快速排序
其代碼如下 :

#include stdio.h html' target='_blank'>static qsort_swap(int *a, int *b){int tmp;tmp = *a;*a = *b;*b = tmp;} void qsort(int *base, int nmemb){int *begin_stack[10];int *end_stack[10];int *begin;int *end;int *seg1;int *seg2;int *seg2p;int loop;unsigned int offset; /* 使用棧而不是常見的遞歸實現 */begin_stack[0] = base;//開始元素位置棧,入棧end_stack[0] = base + (nmemb - 1) ;//結束位置棧,入棧 for (loop = 0; loop --loop) {begin = begin_stack[loop];//開始位置出棧end = end_stack[loop];//結束位置出棧 while (begin end) {offset = (end - begin) 1;//取中間位置 qsort_swap(begin, begin + offset);//交換開始和中間的位置 seg1 = begin;seg2 = end; while (1) {for (; seg1 seg2 *begin *seg1 ; seg1 += 1); for (; seg2 = seg1 *seg2 *begin; seg2 -= 1); if (seg1 = seg2)break; qsort_swap(seg1, seg2);qsort_swap(begin, seg2); seg2p = seg2; if ((seg2p - begin) = (end - seg2p)) {if (seg2p end) {//右側入棧begin_stack[loop] = seg2p + 1;end_stack[loop++] = end;end = seg2p;} else {if (seg2p begin) {// 左側入棧begin_stack[loop] = begin;end_stack[loop++] = seg2p - 1;}//end ifbegin = seg2p;}//end if}//end while}//end for }int main(int argc, char *argv[]){int a[10] = {14, 5, 7, 8, 2, 4, 55, 3};int i;qsort(a, 8);for (i = 0; i i++) printf( %d , a[i]);return 0;}

看完后,有一個感受:強大的指針,受益非淺!

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

淺談PHP 源碼二十五:關于next,current,key函數

淺談PHP源碼二十四 :iterator實現中當值為false時無法完成迭代的原因分析

以上就是淺談PHP源碼二十六:PHP快速排序源碼實現的簡化的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浮梁县| 正镶白旗| 松原市| 海淀区| 台中市| 长治市| 玉山县| 武定县| 鄂伦春自治旗| 嘉义县| 台州市| 策勒县| 防城港市| 阜新| 阿坝县| 天峻县| 新宾| 平顶山市| 灵武市| 诏安县| 临漳县| 泽普县| 裕民县| 洪湖市| 车险| 铜山县| 时尚| 滨海县| 锦屏县| 安西县| 鲜城| 富蕴县| 红安县| 东莞市| 博罗县| 金坛市| 荔波县| 江口县| 竹北市| 荔波县| 潮州市|