冒泡、选择和快速排序算法的C++实现

来源:互联网 发布:在linux部署禅道 编辑:程序博客网 时间:2024/06/01 17:06

冒泡、选择和快速排序算法的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;}



1 1
原创粉丝点击