堆排序
来源:互联网 发布:mac rmvb转换 编辑:程序博客网 时间:2024/06/05 12:04
////////// Heap_sort ///////////////#include <iostream>using namespace std;const int Declared_Size=20;//Create a arraytemplate <class type>void fillArray(type a[], int size, int & numberUsed){type next;int index=1;cin>>next;while ((next!=-1)&&(index<size)){a[index]=next;index++;cin>>next;}numberUsed=index-1;}//Heap_sort//Create a heaptemplate <class type>void Heap_Create(type a[], int s, int t){ type w=a[s]; for (int i=2*s;i<=t;i*=2) { if (i<t) i=(a[i]>a[i+1])? i:i+1; if(w>=a[i]) break; a[s]=a[i]; s=i; } a[s]=w;}//Heap_Create//template <class type>void swap(int &a1, int &a2){ int temp=a1; a1=a2; a2=temp;}template <class type>void Heap_sort(type a[], int num){for (int i=num/2;i>=1;i--) Heap_Create(a,i,num);for (int i=num; i>1; i--){swap(a[1],a[i]);Heap_Create(a,1,i-1);}}template <class type>void print_array(type a[], int num){ for(int i=1;i<=num;i++) cout<<a[i]<<" "; cout<<endl;}int main(){int arr[Declared_Size], siz;cout<<"Create a array: "<<endl;fillArray(arr, Declared_Size, siz);print_array(arr, siz);cout<<"Sort_Heap is: "<<endl;Heap_sort(arr,siz); print_array(arr, siz);cout<<"End of program.\n";return 0;}
<pre name="code" class="cpp">//归并排序#include <stdio.h>#include <stdlib.h>#include <string.h>#define m 11 void merge(int arr[],int low,int mid,int high) { int k, begin1=low, end1=mid, begin2=mid+1,end2=high; int *temp=(int *)malloc((high-low+1)*sizeof(int)); for (k=0;begin1<=end1 && begin2<= end2;++k) { if (arr[begin1]<=arr[begin2]) temp[k]=arr[begin1++]; else temp[k]=arr[begin2++]; } if (begin1<=end1) memcpy(temp+k,arr+begin1,(end1-begin1+1)*sizeof(int)); if (begin2<=end2) memcpy(temp+k,arr+begin2,(end2-begin2+1)*sizeof(int)); memcpy(arr+low,temp,(high-low+1)*sizeof(int)); free(temp); } void merge_sort(int arr[], unsigned int first,unsigned int last) { int mid=0; int(first<last) { mid=(first+last)/2; merge_sort(arr,first,mid); merge_sort(arr,mid+1,last); merge_sort(arr,first,mid,last); } } void main() { int arr[m],i;for (i=0;i<m;i++) scanf("%d",&arr[i]);merge_sort(arr,0,m-1);for (i=0;i<m;i++) printf("%d",arr[i]); }
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 2.linux基础知识与技能
- 32位ubuntu14.04手动编译hadoop2.6.0
- gdb 调试使用
- Unity中数据序列化
- LeetCode代码整理(三)
- 堆排序
- 字符串匹配之boyer moore算法
- setHomeButtonEnabled
- CSS hack技巧大全
- beyond
- Web前端开发实战1:二级下拉式菜单之CSS实现
- Machine Learning] 梯度下降法的三种形式BGD、SGD以及MBGD
- java打印三角,乘法口诀
- cloud service 心得: openstack, cloudinit和puppet