快速排序

每次都调这个快排代码到死,现在就只想记住代码就行

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 100005;
void QuickSort(int arr[],int start,int end)
{
    if(start >= end)
        return ;
    int low = start;
    int high = end;
    int key = arr[low];
    while(low < high)
    {
        while(low < high && arr[high] > key){
            --high;
        }
        if(low < high)
            arr[low++] = arr[high];
        while(low < high && arr[low] < key){
            ++low;
        }
        if(low < high)
            arr[high--] = arr[low];
    }
    arr[low] = key;
    QuickSort(arr,start,low - 1);
    QuickSort(arr,low + 1,end);
}
int main()
{
    int arr[N];
    int n;
    while(~scanf("%d",&n)){
    for(int i = 0;i < n;++i)
    {
        cin >> arr[i];
    }
    QuickSort(arr,0,n - 1);
    printf("%d",arr[0]);
    for(int i = 1;i < n;++i)
    {
        printf(" %d",arr[i]);
    }
    cout << endl;
    //printf("%d\n",arr[n/2]);
    }
    return 0;
}
#include<stdio.h>
int arr[100005]={0};
void show(int n)
{
    int i;
    for(i=0;i<n;++i)
    {
        if(0==i) printf("%d",arr[i]);
        else printf(" %d",arr[i]);
    }
    printf("\n");
}
void swap(int *a,int *b)
{
    int n;
    n=*a;
    *a=*b;
    *b=n;
}
void quicksort(int arr[],int r,int p)
{
    int i=r;
    int j=p+1;
    int k=arr[r];
    if(i<j){
    while(i<j){
    while(i<p&&arr[++i]<k);
    while(arr[--j]>k);
    if(i<j) swap(&arr[i],&arr[j]);
    }
        swap(&arr[r],&arr[j]);
        quicksort(arr,r,j-1);
        quicksort(arr,j+1,p);
    }
}
int main()
{
    int n;
    int i,j;
    while(~scanf("%d",&n)){
    for(i=0;i<n;++i)
    {
        scanf("%d",&arr[i]);
    }
    quicksort(arr,0,n-1);
    show(n);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值