google OJ
title:长度为n的数组乱序存放着0~n-1,现在只能进行0与其他数的swap,请设计并实现排序。
/** google OJ 这里采用从小到大排序 **/ #include<stdio.h> #define N 8 //交换函数 void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } //数组元素的地址 long int getElemAdd(int element, int *array) { int i = 0; for(i=0; i<N; i++) { if(array[i]==element) { return &array[i]; } } } //打印输出 void printfArray(int *array) { int i = 0; for (i = 0; i < N; ++i) { printf("%d ",array[i] ); } } //程序入口 int main() { int array[N] = {3,7,5,2,4,6,0,1}; int i = 0; for(i=N-1; i>=0; i--) { swap(&array[i],getElemAdd(0,array)); swap(getElemAdd(i,array),getElemAdd(0,array)); } printfArray(array); }