假设我们的五元组是ABCDE,那么它最多只需要7次比较就可以保证把5元组排好序。
其主要的思想是固定中间的C,分别比较两边的数,然后在一起进行比较。具体过程可以看sort函数,写的有点难看,将就一下吧,有问必答!
#include "stdafx.h" void swap(int *a,int *b) { int temp=0; temp=*a; *a=*b; *b=temp; } void sort (int *array5) { if(array5[0]>array5[4]) swap(&array5[0],&array5[4]); if(array5[1]>array5[3]) swap(&array5[1],&array5[3]); if(array5[0]>array5[1]) swap(&array5[1],&array5[0]); if(array5[3]>array5[4]) swap(&array5[4],&array5[3]); if(array5[2]<array5[1]) { swap(&array5[2],&array5[1]); if(array5[1]<array5[0]) swap(&array5[1],&array5[0]); return; } else if(array5[2]<array5[3]) return; else { if(array5[2]>array5[4]) { swap(&array5[2],&array5[3]); swap(&array5[3],&array5[4]); } else swap(&array5[2],&array5[3]); } } int _tmain(int argc, _TCHAR* argv[]) { int arr[5]={7,5,9,0,1}; sort(arr); for ( int i = 0; i < 5; ++i) printf("%d",arr[i]); return 0; }