Sorting (bubbling, fast discharge, merge)

A bubble sort

for(int i=2;i<=n;i++)j在前,i在后
    for(int j=1;j<=n-i;j++)
            if(a[j]<a[i])
               swap(a[i],a[j]);

Two: Quick Sort

#include<iostream>

using namespace std;
int a[(int)1e5+5];
void quick_sort(int q[],int l,int r)//先排序再递归
{
    if(l>=r)return;
    int x=q[l],i=l-1,j=r+1;
    while(i<j)
    {
        do i++;while(q[i]<x);
        do j--;while(q[j]>x);
        if(i<j)
            swap(q[i],q[j]);
    }
    quick_sort(a,l,j);
    quick_sort(a,j+1,r);
}
int main ()
{
     int n;
     cin>>n;
     for(int i=1;i<=n;i++)
        cin>>a[i];
     quick_sort(a,1,n);
     for(int i=1;i<=n;i++)
        cout<<a[i]<<' ';



    return 0;
}

Three: merge sort

#include<iostream>

using namespace std;

int a[(int)1e5+5],tmp[(int)1e5+5];
void merge_sort(int q[],int l,int r)
{
    if(l>=r)return ;
    int mid=l+r>>1;
    merge_sort(q,l,mid),merge_sort(q,mid+1,r);
    int k=0,i=l,j=mid+1;
    while(i<=mid&&j<=r)
    if(Q [I] <Q [J]) tmp [K ++] = Q [I ++ ];
     the else tmp [K ++] = Q [J ++ ];
     the while (I <= MID) tmp [K ++] = Q [I ++ ];
     the while (J <= R & lt) tmp [K ++] = Q [J ++ ];
     for ( int I = L, J = 0 ; I <= R & lt; J ++, I ++) Q [I] = tmp [J]; // error prone , tmp array range starting from 0, and q is l and R & lt 
} 
int main () 
{ 
    int n-; 
    CIN >> n-;
     for ( int I = . 1 ; I <= n-; I ++ ) 
        CIN >> a [ I]; 
    merge_sort (A, . 1 , n-);
     for (int i=1;i<=n;i++)
        cout<<a[i]<<' ';
    return 0;
}

 

Guess you like

Origin www.cnblogs.com/zwx7616/p/10987588.html