5,530
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#define EXCHANGE(valA,valB) {valA = valA^valB; valB = valA^valB; valA = valA^valB; }
int gArray[15] = {54 ,66, 1 ,574,664,654,2174,322,5514,1974,46,345,3123,4546,211};
//int gArray[15] = {5514,4546,3123,2174,1974,664,654,574,345,322,211,66,54,46,1};
void sort(int * array,int len) {
if( len <= 1) return;
int mid = len/2;
bool change = false;
for(int idx = 0 ; idx < len; idx++) {
if((array[idx] > array[mid] && idx < mid) || (array[idx] < array[mid] && idx > mid)) {
EXCHANGE(array[idx],array[mid]);
mid = idx;
change = true;
printf("[%d]\t",array[mid]);
for(int idx =0; idx < len; idx++)
printf("%d\t",array[idx]);
printf("\n");
}
}
if(change) sort(array, len);
else {
sort(array, mid);
//sort(array+mid+1,len- mid -1);
}
return;
}
int main(int argc,char * argv[]) {
sort(gArray,15);
printf("[0000]\t");
for(int idx =0; idx < 15; idx++)
printf("%d\t",gArray[idx]);
printf("\n");
return 0;
}