冒泡、选择和快速排序算法的C++实现
#include <iostream>
using namespace std;
void print(int* pData, int count){
for (int i = 0; i< count; i++) {
cout << pData[i] << " ";
}
cout << endl;
}
//C++实现冒泡排序(升序)
void BubbleSort(int* pData, int count)
{
int temp;
for (int i = 1; i < count; i++)
{ //每一轮选出 最大的
for (int j = count - 1; j >= i; j--)
{
if (pData[j-1] > pData[j])
{
temp = pData[j - 1];
pData[j - 1] = pData[j];
pData[j] = temp;
}
}
cout<<"第"<<i<<"轮排序后:";
print(pData, count);
}
}
//C++实现冒泡排序(升序)
void BubbleSort1(int a[],int size)
{
int temp;
for(int pass=1; pass<size; ++pass)
{ //每一轮选出 最大的
for(int k=0; k<size-pass; ++k)
{
if(a[k]>a[k+1])
{
temp=a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
}
cout<<"第"<<pass<<"轮排序后:";
for(int i=0;i<size;i++)
{ cout<<a[i]<<","; }
cout<<endl;
}
}
//选择排序(升序)
void SelectSort(int *a, int len)
{
int k = 0;
for (int i=0; i<len-1; i++)
{
k = i;
for (int j=i+1; j<len; j++)
{
if (a[j]<a[k])
{
k = j;
}
}
if (k!=i)
{ swap(a[i], a[k]); }
cout << "The "<< i <<" round:" << endl;
print(a, len);
cout << "----------------------------" << endl;
}
}
//快速排序(升序)
void quick_sort(int a[], int left, int right)
{
if(left>=right)
{
//std::cout<<"left is bigger than right,please check"<<std::endl;
return ;
}
int i = left;
int j = right;
int x = a[i];
while(i<j)
{
while(i<j && a[j]>x) //向前搜索
{ j--; }
if(i<j)
{
a[i] = a[j];
i++;
}
while(i<j && a[i]<x) //向后搜索
{ i++; }
if(i<j)
{
a[j] = a[i];
j--;
}
}
a[i] = x;
quick_sort(a, left, i-1);
quick_sort(a, i+1, right);
}
int main(int argc, char *argv[])
{
int data[] = {10, 8, 9, 7, 4, 5};
BubbleSort(data, 6);
cout << "The BubbleSort result:" << endl;
print(data, 6);
cout<<std::endl;
int data1[] = {10, 8, 9, 7, 4, 5};
BubbleSort1(data1, 6);
cout << "The BubbleSort1 result:" << endl;
print(data1, 6);
cout<<std::endl;
int data2[] = {10, 8, 9, 7, 4, 5};
SelectSort(data2,6);
cout << "The SelectSort result:" << endl;
print(data2, 6);
cout<<std::endl;
int a[] = {21,35,15 ,37,26,13,27,49,55,14};
cout<<"Before quick_sort: ";
for(int i =0 ; i<10;i++)
{ cout<<a[i]<<" "; }
cout<<endl;
quick_sort(a, 0, 9);
cout<<"After quick_sort: ";
for(int i =0 ; i<10;i++)
{ cout<<a[i]<<" "; }
cout<<endl;
return 0;
}