堆排序
来源:互联网 发布:淘宝网男徒步凉鞋 编辑:程序博客网 时间:2024/05/29 10:33
堆排序:
class Program { static void Main(string[] args) { int[] nums = { 1, 4, 8, 0, 3, 6, 9, 2 }; HeapSort(nums); for (int i = 0; i < nums.Length; i++) { Console.Write(nums[i] + " "); } Console.ReadKey(); } static void HeapSort(int[] nums) { // 构造成大顶堆 for (int i = nums.Length / 2; i >= 1; i--) { AdjustArray(nums, i, nums.Length); } // 进行排序 for (int i = nums.Length; i > 1; i--) { int temp1 = nums[0]; nums[0] = nums[i - 1]; nums[i - 1] = temp1; AdjustArray(nums, 1, i - 1); } } static void AdjustArray(int[] nums, int NumberToAdjust, int maxNumber) { int maxNumberIndex = NumberToAdjust; int tempI = NumberToAdjust; while (true) { int leftNumberIndex = 2 * tempI; int rightNumberIndex = 2 * tempI + 1; if (leftNumberIndex <= maxNumber && nums[leftNumberIndex - 1] > nums[maxNumberIndex - 1]) { maxNumberIndex = leftNumberIndex; } if (rightNumberIndex <= maxNumber && nums[rightNumberIndex - 1] > nums[maxNumberIndex - 1]) { maxNumberIndex = rightNumberIndex; } if (maxNumberIndex != tempI) { int temp = nums[maxNumberIndex - 1]; nums[maxNumberIndex - 1] = nums[tempI - 1]; nums[tempI - 1] = temp; tempI = maxNumberIndex; } else { break; } } } }
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- RNN与LSTM
- leetcode-561. Array Partition I
- 使用Android Studio时遇到的两个问题及解决方法
- LeetCode.238 Product of Array Except Self
- C++ 类的深拷贝与浅拷贝||深拷贝通过重载拷贝构造函数与重载赋值运算符实现
- 堆排序
- python爬取的小说存入mysql数据库
- git+rsync+邮件通告
- Hibernate Query 的 list 和iterate方法缓存的区别
- 1032. 挖掘机技术哪家强(20)
- 10.Struts2_ActionSupport
- uva 10635
- 编程模式 单例模式
- GNU STL vector push_back insert