快速排序的C++实现代码
来源:互联网 发布:ubuntu ssh key 登录 编辑:程序博客网 时间:2024/05/01 22:26
#include <iostream>
using namespace std;
template <typename T>
void Swap(T &x,T &y)
{
T tmp;
tmp = x;
x=y;
y=tmp;
}
/*template <typename T>
int InitMid(T data[],int left,int right)
{
int centre = (left+right)/2;
if(data[left]>data[centre])
Swap(data[left],data[centre]);
if(data[left]>data[right])
Swap(data[left],data[right]);
if(data[centre]>data[right])
Swap(data[centre],data[right]);
Swap(data[centre],data[right-1]);
return data[right-1];
}*/
void QickSort(T data[],int left,int right)
{
int i=left;
int j=right;
T tmp = data[left];
while(i<j)
{
for(;i<j&&data[j]>=tmp;j--);//此处无等号在数组中有相同元素情况下会导致死循环
swap(data[i],data[j]);
for(;i<j&&data[i]<=tmp;i++);
swap(data[i],data[j]);
}
if(i-1>left)
QickSort(data,left,i-1);
if(i+1<right)
QickSort(data,i+1,right);
}
int main()
{
int num[10]={2,5,1,3,8,7,4,9,6,0};
QickSort(num,0,9);
for(int i=0;i<10;i++)
cout<<num[i]<<" ";
cout<<endl;
return 1;
}
using namespace std;
template <typename T>
void Swap(T &x,T &y)
{
T tmp;
tmp = x;
x=y;
y=tmp;
}
/*template <typename T>
int InitMid(T data[],int left,int right)
{
int centre = (left+right)/2;
if(data[left]>data[centre])
Swap(data[left],data[centre]);
if(data[left]>data[right])
Swap(data[left],data[right]);
if(data[centre]>data[right])
Swap(data[centre],data[right]);
Swap(data[centre],data[right-1]);
return data[right-1];
}*/
//这种写法的快排交换次数比较多,如果不将标志元素和前后元素交换,只将前后元素交换可以减少
//交换次数,稍后在研究这个
void QickSort(T data[],int left,int right)
{
int i=left;
int j=right;
T tmp = data[left];
while(i<j)
{
for(;i<j&&data[j]>=tmp;j--);//此处无等号在数组中有相同元素情况下会导致死循环
swap(data[i],data[j]);
for(;i<j&&data[i]<=tmp;i++);
swap(data[i],data[j]);
}
if(i-1>left)
QickSort(data,left,i-1);
if(i+1<right)
QickSort(data,i+1,right);
}
int main()
{
int num[10]={2,5,1,3,8,7,4,9,6,0};
QickSort(num,0,9);
for(int i=0;i<10;i++)
cout<<num[i]<<" ";
cout<<endl;
return 1;
}
- 快速排序的C语言代码实现
- 快速排序的C语言代码实现
- 快速排序的C语言代码实现
- 快速排序的C语言代码实现
- 快速排序的c语言实现代码
- C语言的快速排序算法代码-递归实现
- 简单的C语言快速排序实现代码
- 快速排序的实现--代码
- 快速排序的c实现
- 快速排序的c实现
- 快速排序 C代码
- 快速排序 代码实现
- 快速排序代码实现
- 快速排序代码实现
- 快速排序代码实现
- 快速排序实现代码
- 快速排序代码实现
- 快速排序c实现(代码来自c programming language)
- Filter在Web开发中的应用
- update module
- [发]发布一个极速的平面寻路WIN32组件
- eclipse导入ApiDemos
- Android长度单位详解(dp、sp、px、in、pt、mm、dip)
- 快速排序的C++实现代码
- Linux 下进程间通信机制(二) Pipe和Fifo
- EXCEL文件上传与下载
- 打开文件对话框
- myeclipse启动两个tomcat
- oracle *SQlPlus一些命令
- 5种最常见的http错误
- MV45AOZZ
- Windbg使用日志