70,037
社区成员
发帖
与我相关
我的任务
分享#include<stdio.h>
int main(int argc,char *argv[])
{
int a[6]={4,5,2,6,1,7};
int i,j,t,exg;
for(i=0;i<6;i+=2)
{
exg=i;
for(j=i;j<6;j+=2)
if(a[exg]>a[j])
exg=j;
t=a[i];
a[i]=a[exg];
a[exg]=t;
}
for(i=0;i<6;i++)
printf("%d",a[i]);
return 0;
}
如果是第一种的话应该没问题的...#include <stdio.h>
#include <stdlib.h>
static int _partition(int *arr,int left,int right)
{
int i=(left<<1)-2;
int key=arr[right<<1];
for(int j=(left<<1);j<(right<<1);j+=2)
{
if(arr[j]<=key)
{
int temp=arr[i+2];
arr[i+2]=arr[j];
arr[j]=temp;
i+=2;
}
}
int temp=arr[i+2];
arr[i+2]=key;
arr[right<<1]=temp;
return (i+2)>>1;
}
static void _quickSort(int *arr,int left,int right)
{
if(left<right)
{
int sep=_partition(arr,left,right);
_quickSort(arr,left,sep-1);
_quickSort(arr,sep+1,right);
}
}
extern void quickSort(int *arr,int len)
{
_quickSort(arr,1,(len-1)>>1);
}
int main()
{
int arr[]={1,2,9,3,7,4,2,22,1};
quickSort(arr,sizeof(arr)/sizeof(arr[0]));
for(int i=2;i<sizeof(arr)/sizeof(arr[0]);i+=2)
{
printf("%d ",arr[i]);
}
return 0;
}