diff --git a/codes/c/chapter_sorting/bucket_sort.c b/codes/c/chapter_sorting/bucket_sort.c index 88f6ce4b0c..b9b65de16b 100644 --- a/codes/c/chapter_sorting/bucket_sort.c +++ b/codes/c/chapter_sorting/bucket_sort.c @@ -20,24 +20,20 @@ void bucketSort(float nums[], int n) { int k = n / 2; // 初始化 k = n/2 个桶 int *sizes = malloc(k * sizeof(int)); // 记录每个桶的大小 float **buckets = malloc(k * sizeof(float *)); // 动态数组的数组(桶) - + // 为每个桶预分配足够的空间 for (int i = 0; i < k; ++i) { - // 为每个桶预分配足够的空间 buckets[i] = (float *)malloc(n * sizeof(float)); sizes[i] = 0; } - // 1. 将数组元素分配到各个桶中 for (int i = 0; i < n; ++i) { int idx = (int)(nums[i] * k); buckets[idx][sizes[idx]++] = nums[i]; } - // 2. 对各个桶执行排序 for (int i = 0; i < k; ++i) { qsort(buckets[i], sizes[i], sizeof(float), compare); } - // 3. 合并排序后的桶 int idx = 0; for (int i = 0; i < k; ++i) { diff --git a/codes/c/chapter_sorting/quick_sort.c b/codes/c/chapter_sorting/quick_sort.c index 50a95705d4..6d3986ee5c 100644 --- a/codes/c/chapter_sorting/quick_sort.c +++ b/codes/c/chapter_sorting/quick_sort.c @@ -13,19 +13,16 @@ void swap(int nums[], int i, int j) { nums[j] = tmp; } -/* 快速排序类 */ -// 快速排序类-哨兵划分 +/* 哨兵划分 */ int partition(int nums[], int left, int right) { // 以 nums[left] 为基准数 int i = left, j = right; while (i < j) { while (i < j && nums[j] >= nums[left]) { - // 从右向左找首个小于基准数的元素 - j--; + j--; // 从右向左找首个小于基准数的元素 } while (i < j && nums[i] <= nums[left]) { - // 从左向右找首个大于基准数的元素 - i++; + i++; // 从左向右找首个大于基准数的元素 } // 交换这两个元素 swap(nums, i, j); @@ -36,7 +33,7 @@ int partition(int nums[], int left, int right) { return i; } -// 快速排序类-快速排序 +/* 快速排序 */ void quickSort(int nums[], int left, int right) { // 子数组长度为 1 时终止递归 if (left >= right) { @@ -49,8 +46,9 @@ void quickSort(int nums[], int left, int right) { quickSort(nums, pivot + 1, right); } -/* 快速排序类(中位基准数优化) */ -// 选取三个候选元素的中位数 +// 以下为中位数优化的快速排序 + +/* 选取三个候选元素的中位数 */ int medianThree(int nums[], int left, int mid, int right) { int l = nums[left], m = nums[mid], r = nums[right]; if ((l <= m && m <= r) || (r <= m && m <= l)) @@ -60,7 +58,7 @@ int medianThree(int nums[], int left, int mid, int right) { return right; } -/* 哨兵划分(三数取中值) */ +/* 哨兵划分(三数取中值) */ int partitionMedian(int nums[], int left, int right) { // 选取三个候选元素的中位数 int med = medianThree(nums, left, (left + right) / 2, right); @@ -79,7 +77,7 @@ int partitionMedian(int nums[], int left, int right) { return i; // 返回基准数的索引 } -// 中位基准数优化-快速排序 +/* 快速排序(三数取中值) */ void quickSortMedian(int nums[], int left, int right) { // 子数组长度为 1 时终止递归 if (left >= right) @@ -91,8 +89,9 @@ void quickSortMedian(int nums[], int left, int right) { quickSortMedian(nums, pivot + 1, right); } -/* 快速排序类(尾递归优化) */ -// 快速排序(尾递归优化) +// 以下为尾递归优化的快速排序 + +/* 快速排序(尾递归优化) */ void quickSortTailCall(int nums[], int left, int right) { // 子数组长度为 1 时终止 while (left < right) { @@ -100,11 +99,15 @@ void quickSortTailCall(int nums[], int left, int right) { int pivot = partition(nums, left, right); // 对两个子数组中较短的那个执行快速排序 if (pivot - left < right - pivot) { - quickSortTailCall(nums, left, pivot - 1); // 递归排序左子数组 - left = pivot + 1; // 剩余未排序区间为 [pivot + 1, right] + // 递归排序左子数组 + quickSortTailCall(nums, left, pivot - 1); + // 剩余未排序区间为 [pivot + 1, right] + left = pivot + 1; } else { - quickSortTailCall(nums, pivot + 1, right); // 递归排序右子数组 - right = pivot - 1; // 剩余未排序区间为 [left, pivot - 1] + // 递归排序右子数组 + quickSortTailCall(nums, pivot + 1, right); + // 剩余未排序区间为 [left, pivot - 1] + right = pivot - 1; } } } diff --git a/docs/chapter_preface/about_the_book.md b/docs/chapter_preface/about_the_book.md index 1e18bdc908..ae386834fc 100644 --- a/docs/chapter_preface/about_the_book.md +++ b/docs/chapter_preface/about_the_book.md @@ -30,9 +30,9 @@ ## 致谢 -本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、codingonion、nuomi1、Gonglja、Reanon、justin-tse、danielsss、hpstory、S-N-O-R-L-A-X、night-cruise、msk397、gvenusleo、RiverTwilight、gyt95、zhuoqinyue、Zuoxun、Xia-Sang、mingXta、FangYuan33、GN-Yu、IsChristina、xBLACKICEx、guowei-gong、Cathay-Chen、mgisr、JoseHung、qualifier1024、pengchzn、Guanngxu、longsizhuo、L-Super、what-is-me、yuan0221、lhxsm、Slone123c、WSL0809、longranger2、theNefelibatas、xiongsp、JeffersonHuang、hongyun-robot、K3v123、yuelinxin、a16su、gaofer、malone6、Wonderdch、xjr7670、DullSword、Horbin-Magician、NI-SW、reeswell、XC-Zero、XiaChuerwu、yd-j、iron-irax、huawuque404、MolDuM、Nigh、KorsChen、foursevenlove、52coder、bubble9um、youshaoXG、curly210102、gltianwen、fanchenggang、Transmigration-zhou、FloranceYeh、FreddieLi、ShiMaRing、lipusheng、Javesun99、JackYang-hellobobo、shanghai-Jerry、0130w、Keynman、psychelzh、logan-qiu、ZnYang2018、MwumLi、1ch0、Phoenix0415、qingpeng9802、Richard-Zhang1019、QiLOL、Suremotoo、Turing-1024-Lee、Evilrabbit520、GaochaoZhu、ZJKung、linzeyan、hezhizhen、ZongYangL、beintentional、czruby、coderlef、dshlstarr、szu17dmy、fbigm、gledfish、hts0000、boloboloda、iStig、jiaxianhua、wenjianmin、keshida、kilikilikid、lclc6、lwbaptx、liuxjerry、lucaswangdev、lyl625760、chadyi、noobcodemaker、selear、siqyka、syd168、4yDX3906、tao363、wangwang105、weibk、yabo083、yi427、yishangzhang、zhouLion、baagod、ElaBosak233、xb534、luluxia、yanedie、thomasq0、YangXuanyi 和 th1nk3r-ing 。 +本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、Gonglja、nuomi1、codingonion、Reanon、justin-tse、hpstory、danielsss、curtishd、night-cruise、S-N-O-R-L-A-X、msk397、gvenusleo、RiverTwilight、gyt95、zhuoqinyue、Zuoxun、mingXta、hello-ikun、khoaxuantu、FangYuan33、GN-Yu、longsizhuo、mgisr、Cathay-Chen、guowei-gong、xBLACKICEx、K3v123、IsChristina、JoseHung、qualifier1024、pengchzn、Guanngxu、QiLOL、L-Super、WSL0809、Slone123c、lhxsm、yuan0221、what-is-me、rongyi、JeffersonHuang、longranger2、theNefelibatas、yuelinxin、xiongsp、nanlei、a16su、cy-by-side、gaofer、malone6、Wonderdch、hongyun-robot、XiaChuerwu、yd-j、bluebean-cloud、iron-irax、he-weilai、Nigh、MolDuM、Phoenix0415、XC-Zero、SamJin98、reeswell、NI-SW、Horbin-Magician、xjr7670、YangXuanyi、DullSword、iStig、qq909244296、jiaxianhua、wenjianmin、keshida、kilikilikid、lclc6、lwbaptx、luluxia、boloboloda、hts0000、gledfish、fbigm、echo1937、szu17dmy、dshlstarr、coderlef、czruby、beintentional、KeiichiKasai、xb534、ElaBosak233、baagod、zhouLion、yishangzhang、yi427、yabo083、weibk、wangwang105、th1nk3r-ing、tao363、4yDX3906、syd168、siqyka、selear、sdshaoda、noobcodemaker、chadyi、lyl625760、lucaswangdev、liuxjerry、0130w、shanghai-Jerry、JackYang-hellobobo、Javesun99、lipusheng、ShiMaRing、FreddieLi、FloranceYeh、Transmigration-zhou、fanchenggang、gltianwen、Dr-XYZ、curly210102、CuB3y0nd、youshaoXG、bubble9um、fanenr、52coder、foursevenlove、KorsChen、ZongYangL、hezhizhen、linzeyan、ZJKung、GaochaoZhu、yang-le、Evilrabbit520、Turing-1024-Lee、Suremotoo、Allen-Scai、Richard-Zhang1019、qingpeng9802、primexiao、nidhoggfgg、1ch0、MwumLi、ZnYang2018、hugtyftg、logan-qiu、psychelzh 和 Keynman 。 -本书的代码审阅工作由 codingonion、Gonglja、gvenusleo、hpstory、justin-tse、krahets、night-cruise、nuomi1 和 Reanon 完成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代码的规范与统一。 +本书的代码审阅工作由 codingonion、curtishd、Gonglja、gvenusleo、hpstory、justin-tse、krahets、night-cruise、nuomi1 和 Reanon 完成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 diff --git a/mkdocs.yml b/mkdocs.yml index 9a548ce57a..e235acc91d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,7 +9,7 @@ site_dir: site repo_name: krahets/hello-algo repo_url: https://github.com/krahets/hello-algo edit_uri: tree/main/docs -version: 1.0.0 +version: 1.1.0 # Copyright copyright: Copyright © 2022-2024 krahets
The website content is licensed under CC BY-NC-SA 4.0 diff --git a/overrides/main.html b/overrides/main.html index 34d38843e5..36cd9e32a9 100644 --- a/overrides/main.html +++ b/overrides/main.html @@ -6,7 +6,7 @@ {% elif config.theme.language == 'zh-Hant' %} {% set announcements = '紙質書(簡體中文版)已發行,詳情請見這裡' %} {% elif config.theme.language == 'en' %} - {% set announcements = 'Feel free to engage in Chinese-to-English translation and pull request review! Please visit #914 for details.' %} + {% set announcements = 'Welcome to contribute to Chinese-to-English translation! Please visit #914 for more details.' %} {% endif %}