C++八大排序法1~4
///C++八大排序法1~4/// 作者:lyb661(190115)
/*上段时间一直在看C++排序算法。略有心得,对网络上的排序代码进行一定程度的简化,
让代码更简洁,直观,易于理解,主要做法是减少代码长度,精简局部变量的数目,
让循环有规律,便于记忆。由于时间仓促,没有更多注释,过一段时间再详细解释一下。
本文使用注释文字,全篇文稿可以直接进行编译,运行。*/
#include <iostream>
using namespace std;
void swap_arr(int& a,int& b) ///交换数组元素
{
int temp=a;
a=b;
b=temp;
}
void print_arr(int a[],int n) ///打印数组元素
{
for(int i=0;i<n;i++){
if(i>0)
cout<<' ';
cout<<a[i];
}
}
void bubble_sort(int a[],int n) ///1.冒泡排序
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
swap_arr(a[j],a[j+1]);
}
void select_sort(int a[],int n) ///2.选择排序
{
int k=0;
for(int i=0;i<n-1;i++){
k=i;
for(int j=i+1;j<n;j++)
if(a[k]>a[j])
k=j;
swap_arr(a[k],a[i]);
}
}
void insert_sort(int a[],int n) ///3.插入排序
{
for(int i=0;i<n-1;i++){
int j=i+1;
while(j>0&&a[j]<a[j-1]){
swap_arr(a[j],a[j-1]);
--j;
}
}
}
void quick_sort(int a[],int low,int high) ///4.快速排序
{
if(low>=high)
return;
int i=low,j=high,k=a[i];
while(i<j){
while(i<j&&a[j]>=k)
j--;
if(i<j)
a[i]=a[j];
while(i<j&&a[i]<=k)
i++;
if(i<j)
a[j]=a[i];
a[j]=k;
quick_sort(a,low,i-1);
quick_sort(a,i+1,high);
}
}
int main()
{
int a[]={12,22,3,2,85,54,98};
int n=sizeof a/sizeof a[0];
print_arr(a,n);
cout<<"\n---------split line----------\n";
quick_sort(a,0,n-1);
///insert_sort(a,n);
///select_sort(a,n);
///bubble_sort(a,n);
print_arr(a,n);
cout << "\nHello world!" << endl;
return 0;
}
[此贴子已经被作者于2019-1-17 11:02编辑过]