⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 heap sort.cpp

📁 经典算法实现
💻 CPP
字号:
#include "Sort.h"


/*extern int num;
extern int *arr;*/


/*void swap(int &i,int &j){
	int temp=i;
	i= j;
	j=temp;
}*/

void Hadjust(int start,int end){


	//int current=start;// 逻辑上的编号,从1开始

	int left=-1,right=-1;

	if (start*2 <=end)
	{
		left = start*2;
		if (left+1<=end)
			right=left+1;
	}

	else return;

	bool lorr=0;

	if (right>=0)
	{
		if (arr[left-1] <arr[right -1])
		{
			lorr =1;
		}
	}

	if (lorr)//右边大
	{
	
		if (arr[start-1] < arr[right-1] )
		{
			
			swap(arr[start-1],arr[right-1]);
			/*int temp = arr[current-1];
			arr[current-1] = arr[right-1];
			arr[right-1] = temp;*/

			Hadjust(right,end);
		}
	}

	else {

		if (arr[start-1] < arr[left-1] )
		{
			swap(arr[start-1],arr[left-1]);
			Hadjust(left,end);
		}
	}
		
}

void creatHeap(){

	for (int i=(num/2);i>=1;i--)
	{
		Hadjust(i,num);
	}


}


void heapSort(){

	creatHeap();

	for (int i=num;i>1;i--)
	{
		swap(arr[0],arr[i-1]);
		Hadjust(1,i-1);

	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -