最短时间将正负数排序
用最短的时间的方法将负数全部排在正数的前面,eg:-1,-2,-1,0,1,3,2
思想:快排第一趟,以0为枢纽。快排具体可以参考下篇:第6周笔记11-快速排序(int)
/*
用最短的时间的方法将负数全部排在正数的前面,eg:-1,-2,-1,0,1,3,2
*/
#include<stdio.h>
#define N 100
int arr[N];
int main(){
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
int lower=0,higher=n-1;
i=lower,j=higher;
int key=arr[i];
while(i<j){
while(arr[j]>=key &&i<j) j--; arr[i]=arr[j];
while(arr[i]<=key &&i<j) i++; arr[j]=arr[i];
}
arr[i]=key;
for(i=0;i<n;i++)
printf("%d ",arr[i]);
return 0;
}