三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

跟我一起学“仓颉”算法-分治算法

跟我一起学“仓颉”算法-分治算法

目录

一、分治

二、合并排序

三、小结


一、分治

分治:分而治之。

满足分治算法的条件:

  • 原问题可被分解成若干个规模较小的子问题;
  • 子问题相互独立;
  • 子问题的解可以合并为原问题的解。

二、合并排序

合并排序就是将待排序的大数组分解成待排序的小数组,然后把每个小数组进行排序,最终将排好序的小数组合并成有序的大数组,时间复杂度:O(nlogn)。

package Algorithm func mergeSort(array: Array<Int64>, low: Int64, high: Int64): Array<Int64> { if (low < high) { let mid = low + (high - low)/ 2 mergeSort(array, low, mid) mergeSort(array, mid + 1, high) var newArray = Array<Int64>(high - low + 1, repeat: 0) var i = low var j = mid + 1 var k = 0 while (i <= mid && j <= high) { if (array[i] <= array[j]) { newArray[k] = array[i] i++ k++ } else { newArray[k] = array[j] j++ k++ } } while (i <= mid) { newArray[k] = array[i] i++ k++ } while (j <= high) { newArray[k] = array[j] j++ k++ } return newArray } return array } main(): Int64 { let array = [4, 9, 15, 24, 30, 2, 6, 18, 20] // let array = [1,3,2] println(mergeSort(array, 0, array.size - 1)) return 0 }

三、小结

本章为大家详细的介绍了仓颉数据结构与算法中分治算法的内容,下一章,为大家带来分治算法练习题的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉数据结构与算法有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

← 返回列表