//快速排序:

#include <stdio.h>
#define MAX 500000
int s[MAX];
void Q_Sort(int start,int end)
{
int i,j,t;
if ( start >= end ) return ;
t = s[start];
i = start;
j = end;
while ( i < j)
{
while ( s[j] >= t && i < j)
{
j--;
}
s[i] = s[j];
while ( s[i] <= t && i < j)
{
i++;
}
s[j] = s[i];
}
s[i] = t;
Q_Sort(start,i-1);
Q_Sort(i+1,end);
}
int main()
{
int i,n;
while (scanf("%d",&n),n)
{
for ( i = 0 ; i < n ; i++)
{
scanf("%d",&s[i]);
}
Q_Sort(0,n-1);
}
return 0;
}

  


//归并排序

#include <stdio.h>
#define MAX 500000
int a[MAX];
int b[MAX];
void Merge(int left,int mid,int right)
{
int i,j,k;
i = left;
j = mid+1;
k = left;
while ( i <= mid && j <= right )
{
if ( a[i] <= a[j] )
{
b[k++] = a[i++];
}
else
{
b[k++] = a[j++];
}
}
while ( i <= mid )
{
b[k++] = a[i++];
}
while ( j <= right )
{
b[k++] = a[j++];
}
}
void MergeSort(int left,int right)
{
int i,mid;
if ( left < right )
{
mid = ( left + right ) / 2 ;
MergeSort(left , mid);
MergeSort(mid+1 , right);
Merge(left,mid,right);
for ( i = left ; i <= right ; i++)
{
a[i] = b[i];
}
}
}
int main()
{
int i,n;
while (scanf("%d",&n),n)
{
for ( i = 0 ; i < n ; i++)
{
scanf("%d",&a[i]);
}
MergeSort(0,n-1);
}
return 0;
}         

  


//堆排:

#include <stdio.h>
#define MAX 500000
int s[MAX];
void Heapify(int x,int n)
{
if ( x*2+1 <= n)
{
if ( s[x] == s[2*x] && s[x] == s[2*x+1] ) return ;
if ( s[2*x] > s[x] && s[2*x] > s[2*x+1] )
{
s[2*x] ^= s[x] ^= s[2*x] ^= s[x] ;
Heapify(2*x,n);
}
else if ( s[2*x+1] > s[x] && s[2*x+1] > s[2*x] )
{
s[2*x+1] ^= s[x] ^= s[2*x+1] ^= s[x] ;
Heapify(2*x+1,n);
}
else if ( s[2*x+1] == s[2*x] && s[2*x] > s[x])
{
s[2*x] ^= s[x] ^= s[2*x] ^= s[x];
Heapify(2*x,n);
}
}
else if ( x*2 == n )
{
if ( s[2*x] > s[x] )
{
s[2*x] ^= s[x] ^= s[2*x] ^= s[x] ;
Heapify(2*x,n);
}
}
}
void HeapSort(int n)
{
int i,k;
for ( i = n/2 ; i >= 1 ; i--)
{
Heapify(i,n);
}
for ( k = n ; k > 1 ; k--)
{
s[k] ^= s[1] ^= s[k] ^= s[1];
Heapify(1,k-1);
}
}
int main()
{
int i,n;
while (scanf("%d",&n),n)
{
for ( i = 1 ; i <= n ; i++)
{
scanf("%d",&s[i]);
}
HeapSort(n);
for ( i = 1 ; i <= n ; i++)
{
if ( i != n ) printf("%d ",s[i]);
else printf("%d\n",s[i]);
}
}
return 0;
}

  


 
 

最新文章

  1. IOS网络第七天WebView-03js中调用webView中的代码
  2. Tomcat安装后,远程IP无法访问的问题。
  3. [作业向]tinyhttp web服务器设计及完整代码
  4. PHP组合模式、策略模式
  5. jquery 触发a链接点击事件
  6. iOS开发——常用Runtime函数
  7. wp如何代码实现锁屏
  8. MiniProfiler找不到jquery的
  9. 【bzoj2761】[JLOI2011]不重复数字
  10. windows安装虚拟主机virtualbox遇到的困难
  11. Django(五)框架之模板继承和静态文件配置
  12. poj1990两个树状数组
  13. windows下使用LibreOffice的体验
  14. 1073: 动物简介(animal)
  15. 使用Windbg找出死锁,解决生产环境中运行的软件不响应请求的问题
  16. ava8并发教程:Threads和Executors
  17. Linux GPIO控制方法
  18. HDU Humble Numbers
  19. Selenium Webdriver——实现截图功能
  20. ScrollView中嵌套ExpandableListView

热门文章

  1. jquery ajax跨域取数据
  2. IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法
  3. C#有关 字符串方法的使用
  4. Curl 采集乱码 gzip 原因及解决方案 utf-8
  5. java 抓取百度根据关键词搜索域名
  6. 那些年被我坑过的Python——邂逅与初识(第一章)
  7. 如何在win7上面安装python的包
  8. JSON和XML的比较
  9. python关键字
  10. noip2014 考试总结