快速排序

c语言
//快速排序 从小到大 
#include <stdio.h>
int a[101];
void quicksort(int left, int right){//left和right是一组数组里面最左边和最右边的下标 
   int temp,t,i,j;
   if(left > right) return ;
   	
   temp = a[left];//temp是基准值就是拿来比较的数 
   i = left;
   j = right;
   while(i != j){
   	 while(a[j] >= temp && i < j) j--;//从最左边开始找比基准数大的数 
     while(a[i] <= temp && i < j) i++;//从最右边开始找比基准数小的数
      //注意的要点是要从右开始找起 
     if(i < j){
   	       t = a[i];
	    a[i] = a[j];
	    a[j] = t; 
     }//找到以后交换,直到i==j,最终让基准数归位 
   }
   a[left] = a[i];
      a[i] = temp;//找到新的基准数后与原来的基准数交换 
      
   quicksort(left,i-1);//继续处理左边的 
   quicksort(i+1,right);//继续处理右边的 
   return ; 
}
int main(){
	int i,n;
	scanf("%d", &n);
	for(i = 1;i <= n; i++){
	  scanf("%d",&a[i]);	
	}
	
	quicksort(1,n);
	
	for(i = 1;i <= n; i++){
	  printf("%d ",a[i]);	
	} 
	return 0;
} 

c++

#include <iostream>
using namespace std;
int a[101];
void quicksort(int left,int right){
	int i,j,temp,t;
	if(left > right) return;
	temp = a[left], i=left, j=right;
	while(i != j){
		while(a[j] >= temp && i < j) j--;
		while(a[i] <= temp && i < j) i++;
		if(i<j){
			t=a[i];
			a[i]=a[j];
			a[j]=t;
		} 
	}
	a[left]=a[i];
	a[i]=temp;
	
	quicksort(left,i-1);
	quicksort(i+1,right); 
	return; 
}
int main(){
	int i,n;
    cin>>n;
	for(i = 1;i <= n; i++){
	 cin>>a[i];	
	}
	
	quicksort(1,n);
	
	for(i = 1;i <= n; i++){
	  cout<<a[i]<<" ";	
	}
	cout<<endl; 
	return 0;
} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值