快速排序 qsort
2007-09-18 22:50
351 查看
还未作详细的分析
/*****************************************
* 文件名: qsort.cpp
* 功能: 实现快速排序并测试
* 创建日期: 2007-9-18
*****************************************/
#include <iostream>
using namespace std;
/****************************************
* 输入参数:A - 要排序的数列
p, r - 对A中p至r的范围内的数
进行排序
****************************************/
template <typename T>
void mqsort(T *A, int p, int r)
{
int q;
if (p < r)
{
q = partition(A, p, r);
mqsort(A, p, q - 1);
mqsort(A, q + 1, r);
}
}
template <typename T>
int partition(T *A, int p, int r)
{
int i, j;
T x = A[r];
i = p - 1;
for (j = p; j < r; j++)
{
if (A[j] <= x)
mswap(A[++i], A[j]);
}
mswap(A[++i], A[r]);
return i;
}
template <typename T>
void mswap(T &a, T &b)
{
T tmp = a;
a = b;
b = tmp;
}
template <typename T>
void display(T *A, int n) /* 传递的仅仅是数组A第一个元素的地址,并不是整个数组 */
{ /* 当用 int len = sizeof(A) / sizeof(A[0]) 求值时就是 1 */
int i;
for (i = 0; i < n; i++)
cout << A[i] << ' ';
}
int main()
{
int A[] = { 2, 1, 32, 12, 4, 11, 21, 15 };
int len = sizeof(A) / sizeof(A[0]);
display(A, len);
cout << endl;
mqsort(A, 0, len - 1);
display(A, len);
cout << endl;
return 0;
}
/*****************************************
* 文件名: qsort.cpp
* 功能: 实现快速排序并测试
* 创建日期: 2007-9-18
*****************************************/
#include <iostream>
using namespace std;
/****************************************
* 输入参数:A - 要排序的数列
p, r - 对A中p至r的范围内的数
进行排序
****************************************/
template <typename T>
void mqsort(T *A, int p, int r)
{
int q;
if (p < r)
{
q = partition(A, p, r);
mqsort(A, p, q - 1);
mqsort(A, q + 1, r);
}
}
template <typename T>
int partition(T *A, int p, int r)
{
int i, j;
T x = A[r];
i = p - 1;
for (j = p; j < r; j++)
{
if (A[j] <= x)
mswap(A[++i], A[j]);
}
mswap(A[++i], A[r]);
return i;
}
template <typename T>
void mswap(T &a, T &b)
{
T tmp = a;
a = b;
b = tmp;
}
template <typename T>
void display(T *A, int n) /* 传递的仅仅是数组A第一个元素的地址,并不是整个数组 */
{ /* 当用 int len = sizeof(A) / sizeof(A[0]) 求值时就是 1 */
int i;
for (i = 0; i < n; i++)
cout << A[i] << ' ';
}
int main()
{
int A[] = { 2, 1, 32, 12, 4, 11, 21, 15 };
int len = sizeof(A) / sizeof(A[0]);
display(A, len);
cout << endl;
mqsort(A, 0, len - 1);
display(A, len);
cout << endl;
return 0;
}
相关文章推荐
- 快速排序 qsort()函数
- qsort 快速排序
- C语言中用qsort()快速排序
- C/C++ 库函数快速排序 qsort
- 快速排序 qsort
- 快速排序 Gnu glibc qsort_r
- C/C++ qsort()快速排序用法
- 快速排序的优化及其与qsort的比较
- 菜鸟学C语言三:快速排序与调用C语言库函数qsort()
- C程序快速排序之qsort()
- C/C++ qsort()快速排序的用法
- 快速排序的库函数qsort与sort的使用方法
- 快速排序qsort的使用
- 快速排序--自行实现+qsort+sort
- 快速排序 C语言的qsort及C++的sort
- 快速排序 C语言的qsort 以及 C++的 sort
- 快速排序qsort和sort的用法
- 快速排序 [Qsort]
- 快速排序(qsort)
- 快速排序 Gnu glibc qsort