{
//最后一个有孩子的节点的位置 i= (length -1) / 2
for (int i = (length -1) / 2 ; i >= 0; --i)
HeapAdjust(H,i,length);
}
/**
* 堆排序算法
*/
void HeapSort(int H[],int length)
{
//初始堆
BuildingHeap(H, length);
//从最后一个元素开始对序列进行调整
for (int i = length - 1; i > 0; --i)
{
//交换堆顶元素H[0]和堆中最后一个元素
int temp = H[i]; H[i] = H[0]; H[0] = temp;
//每次交换堆顶元素和堆中最后一个元素之后,都要对堆进行调整
HeapAdjust(H,0,i);
}
}
int main{
int H[10] = {3,1,5,7,2,4,9,6,10,8};
cout<<"初始值:";
print(H,10);
HeapSort(H,10);
//selectSort(a, 8);
cout<<"结果:";
print(H,10);
}
五、冒泡排序(Bubble Sort)
算法思想:
冒泡遍历所有的数据,每次对相邻元素进行两两比较,如果顺序和预先规定的顺序不一致,则进行位置交换;这样一次遍历会将最大或最小的数据上浮到顶端,之后再重复同样的操作,直到所有的数据有序 。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端 。
算法代码:
void bubbleSort(int a[], int n){
for(int i =0 ; i< n-1;i) {
for(int j = 0; j < n-i-1;j) {
if(a[j] > a[j 1])
{
int tmp = a[j] ; a[j] = a[j 1] ; a[j 1] = tmp;
}
}
}
}
六、快速排序(Quick Sort)
算法思想:
快速排序是由东尼·霍尔所发展的一种排序算法 。在平均状况下,排序 n 个项目要Ο(n logn)次比较 。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见 。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来
快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists) 。
算法步骤:
- 从数列中挑出一个元素,称为 “基准”(pivot) 。
- 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边) 。在这个分区退出之后,该基准就处于数列的中间位置 。这个称为分区(partition)操作 。
- 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序 。
算法代码:
void print(int a[], int n){
for(int j= 0; j cout< }
cout<}
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int partition(int a[], int low, int high)
{
int privotKey = a[low]; //基准元素
while(low < high){ //从表的两端交替地向中间扫描
while(low < high && a[high] >= privotKey) --high; //从high 所指位置向前搜索,至多到low 1 位置 。将比基准元素小的交换到低端
swap(&a[low], &a[high]);
while(low < high && a[low] <= privotKey )low;
swap(&a[low], &a[high]);
}
print(a,10);
return low;
}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- excel合并单元格快捷键是什么
- 我来教你Excel把多个单元格内容合并到一个单元格的操作教程 我来教你跳舞
- 小编教你闪电PDF转换成WORD转换器合并或分割PDF文件的详细操作教程
- 小编教你Excel快速合并两列数据/文本的操作教程 小编教你怎么选:羽毛球拍3U和4U的区别
- 教你excel表格里直接相加来求和的操作方法 Excel表合并
- 笔记本电脑分盘教程 电脑分盘怎么合并
- 小编分享迅捷CAD编辑器把CAD里多个图形合并成块的相关流程 迅捷影视分享码
- 西樵实验小学升学率 佛山市公办小学排名?
- 教你Excel 2019自动排序编号的详细步骤教程
- 金山pdf阅读器如何合并pdf文件,几秒达成