快速排序

 #include <iostream>
using namespace std; void swap(int num[], int i, int j)
{
int temp = num[i];
num[i] = num[j];
num[j] = temp;
} int partition(int num[], int left, int right)
{
int key = left;
int value = num[key];
while (left < right)
{
while (left < right && num[right] >= value)right--;
while (left < right && num[left] <= value)left++;
swap(num, right, left);
}
swap(num, key, left);
return left;
} void QuickSort(int num[], int begin, int end)
{
if (begin < end)
{
int middle = partition(num, begin, end);
QuickSort(num, begin, middle - );
QuickSort(num, middle + , end);
}
} int main()
{
int num[];
int n = ;
while (cin >> n)
{
for (int i = ; i < n; i++)
{
int temp = ;
cin >> temp;
num[i] = temp;
}
QuickSort(num, , n - );
for (int i = ; i < n; i++)
cout << num[i] << " ";
cout << endl;
}
return ;
}

归并排序

#include <iostream>
using namespace std; void Merge(int *from, int *to, int begin, int middle, int end)
{
int i = begin;
int j = middle + ;
int k = i;
while (i <= middle && j <= end)
{
if (from[i] < from[j])
to[k++] = from[i++];
else to[k++] = from[j++];
}
while (i <= middle) to[k++] = from[i++];
while (j <= end) to[k++] = from[j++];
} void MergePass(int *from, int *to, int end, int h)
{
int i = ;
while (i <= end - * h + )
{
Merge(from, to, i, i + h - , i + * h - );
i += * h;
}
if (i < end - h + )
Merge(from, to, i, i + h - , end);
else
for (int k = i; k <= end; k++)
{
to[k] = from[k];
}
} void MergeSort(int *from, int *to, int begin, int end)
{
int h = ;
while (h <= end)
{
MergePass(from, to, end, h);
h = * h;
MergePass(to, from, end, h);
h = * h;
}
} int main() {
int num[];
int num2[];
int n = ;
while (cin >> n)
{
for (int i = ; i < n; i++)
{
int temp = ;
cin >> temp;
num[i] = temp;
}
MergeSort(num, num2, , n - );
for (int i = ; i < n; i++)
cout << num[i] << " ";
cout << endl;
}
return ;
}

堆排序

 #include <stdio.h>

 void HeapAdjust(int *num, int s, int length)
{
int temp = num[s];
int child = * s + ;
while (child < length)
{
if (child + < length && num[child] < num[child + ])
child++;
if (num[s] < num[child])
{
num[s] = num[child];
num[child] = temp;
s = child;
child = * s + ;
}
else
break;
}
} void buildingHeap(int *num, int length)
{
for (int i = (length - ) / ; i >= ; --i)
HeapAdjust(num, i, length);
} void HeapSort(int *num, int length)
{
buildingHeap(num, length);
for (int i = length - ; i > ; --i)
{
int temp = num[];
num[] = num[i];
num[i] = temp;
HeapAdjust(num, , i);
}
} void print(int num[], int n) {
for (int i = ; i < n; i++) {
printf("%d ", num[i]);
}
printf("\n");
} int main()
{
int num[];
int n = ;
while (scanf("%d", &n) != EOF)
{
for (int i = ; i < n; i++)
scanf("%d", &num[i]);
HeapSort(num, n);
print(num, n);
}
return ;
}

转自:http://www.cnblogs.com/renjiashuo/p/7412583.html

最新文章

  1. win7系统的右键菜单只显示一个白色框不显示菜单项 解决办法
  2. Asp.Net_&lt;%%&gt;模式常用语法
  3. [DFNews] Cellebrite UFED系列更新, 支持IOS7
  4. 使用Enitity Framework实现增删改查服务中的一些通用思路
  5. IIS搭建本地服务器,花生壳实现外网通过域名访问网站
  6. IOS开发--上传图片
  7. Error parsing XML: not well-formed (invalid token)
  8. leetcode Trapping Rain Water pthon
  9. ssh的public key的使用
  10. Android中查看布局文件中的控件(view,id)在哪里被调用(使用)
  11. MyBatis 批量操作、集合遍历-foreach
  12. c++ 如何获取多线程的返回值?
  13. win10搭建svn服务
  14. [精华][推荐]CAS SSO实现单点登录框架学习源码
  15. Ioc及Bean容器(三)
  16. 前端基础-- CSS
  17. BroadcastReceiver插件化解决方案
  18. SQLSERVER性能调优小技巧
  19. 查看值是否传过来php
  20. Logging模块 + traceback模块 + importlib模块 + requests模块

热门文章

  1. 案例16-validate自定义校验规则校验用户名是否存在
  2. 【javascript】javascript学习之js脚本的解析步骤
  3. unity优化
  4. OGNL与值栈
  5. BNU 33693——Problemsetting——————【枚举+最大流】
  6. jquery 闭包
  7. JQuery extend()与工具方法、实例方法
  8. PDF文件比对工具
  9. dategrid快速录入一行数据的一波操作
  10. Spring Cloud个组件原理