zoukankan      html  css  js  c++  java
  • 堆排序练习

    #include <iostream>
    
    using namespace std;
    
    int arr[] = {1,2,3,4,5,6 };
    
    void swap(int& i, int& j)
    {
    	int k = i;
    	i = j;
    	j = k;
    }
    
    void HeapAdjust(int array[], int i,const int length)
    {
    	int lChild = i * 2;
    	int rChild = i * 2 + 1;
    	int max = i;
    	if (i <= length / 2)
    	{
    		if (array[lChild - 1] > array[rChild - 1])
    			max = lChild;
    		else
    			max = rChild;
    		if (array[max-1] > array[i - 1])
    		{ 
    			swap(array[max-1], array[i - 1]);
    			HeapAdjust(array,max,length);
    		}
    	}
    }
    
    
    int main()
    {
    	int arrLen = sizeof(arr) / sizeof(arr[0]);
    	for (int i = arrLen / 2; i > 0; i--)
    	{
    		HeapAdjust(arr, i, arrLen);
    	}
    
    	for (int i = arrLen; i > 2; i--)
    	{
    		swap(arr[0], arr[i-1]);			 							
    		HeapAdjust(arr, 1, i-2);			
    	}
    
        return 0;
    }
    

      

  • 相关阅读:
    JS控制文本框输入的内容
    JavaScript属性
    无缝滚动
    CCS实例,网页栏目
    CSS特效
    HTML技巧
    如何解决问题
    判断输入的字符是不是数字
    删除txt文件内容
    能组成几个单词
  • 原文地址:https://www.cnblogs.com/itdef/p/6097107.html
Copyright © 2011-2022 走看看