- #include <iostream>
- using namespace std;
- template <typename T,typename S>
- void swap(T array[], S a,S b)
- {
- T temp = array[a];
- array[a] = array[b];
- array[b] = temp;
- }
- template <typename T,typename S>
- void siftdown(T array[], S size, S i)
- {
- S t,flag = 0;
- while(2*i <= size && flag == 0)
- {
- if(array[i] < array[2*i])
- t = 2*i;
- else
- t = i;
- if(2*i+1 <= size)
- if(array[t] < array[2*i+1])
- t = 2*i+1;
- if(t != i)
- {
- swap(array,t,i);
- i = t;
- }
- else
- flag = 1;
- }
- }
- template <typename T,typename S>
- void Sort(T array[], S size)
- {
- S i,tsize = size/2;
- for(i = tsize; i > 0; --i)
- siftdown(array,size,i);
- while(size > 1)
- {
- swap(array,1,size);
- size--;
- siftdown(array,size,1);
- }
- }
- int main()
- {
- int n,i;
- double array[20];
- cin >> n;
- //要从下标为1的位置开始输入才可以成功排序
- for(i = 1; i <= n; ++i)
- cin >> array[i];
- Sort(array,n);
- for(i = 1; i <= n; ++i)
- cout << array[i] << " ";
- return 0;
- }
排序函数模板
最新推荐文章于 2024-01-05 15:33:21 发布