#include
#include
typedef unsigned int UINT32;
typedef unsigned char UINT8;
typedef UINT8 (*HANDLERFUNC)(int arr[],UINT32 len);
typedef struct
{
char name[20];
HANDLERFUNC funcname;
}Sort_Typedef;
void Traverse(int arr[],UINT32 len);
UINT8 SelectionSort(int arr[],UINT32 len);
UINT8 BubbleSort(int arr[],UINT32 len);
UINT8 InsertionSort(int arr[],UINT32 len);
UINT8 QuickSort(int arr[],UINT32 len);
Sort_Typedef method[] =
{
{“SelectionSort”, SelectionSort},
{“BubbleSort”, BubbleSort},
{“InsertionSort”, InsertionSort},
{“QuickSort”, QuickSort},
};
int main()
{
int i = 0;
int arr[10] = {1,5,3,11,23,10,4,9,0,2};
UINT32 len = sizeof(arr)/sizeof(arr[0]);
printf(“排序前的顺序为:n”);
Traverse(arr,len);
char fname[20] = "BubbleSort"; for(i=0;i}
UINT8 QuickSort(int arr[],UINT32 len)
{
UINT32 i = 0;
UINT32 j = len;
int value = 0;
int left = 0;
int right = 0;
UINT32 half = 0 ;//printf("QuickSortn"); if(0 >= len) { printf("0 >= lenn"); return 1; } if(len == 1) { return 0 ; } if(len == 2) { if(arr[0]>arr[1]) { arr[0] = arr[0] ^ arr[1]; arr[1] = arr[0] ^ arr[1]; arr[0] = arr[0] ^ arr[1]; } return 0 ; } value = arr[0]; i = 1; j = len-1; while(i <= j) { if(value > arr[j]) { if(value < arr[i]) { int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } else { i++; } } else { j--; } } int temp = arr[j]; arr[j] = arr[0]; arr[0] = temp; //printf("%dn",i); QuickSort((arr),j+1) ; QuickSort((arr+(j+1)),len-(j+1)); printf("排序后的顺序为:n"); Traverse(arr,len); return 0;}
UINT8 SelectionSort(int arr[],UINT32 len)
{
UINT32 i = 0;
UINT32 j = 0;
UINT32 index = 0;
int minvalue = 0;printf("selectionSortn"); if(0 >= len) { printf("0 >= lenn"); return 1; } for(i = 0 ;iarr[j]) { minvalue = arr[j]; index = j; } } if(i != j) { arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ arr[j]; arr[i] = arr[i] ^ arr[j]; } } printf("排序后的顺序为:n"); Traverse(arr,len); return 0; }
UINT8 BubbleSort(int arr[],UINT32 len)
{
UINT32 i = 0;
UINT32 j = 0;
int max = 0;printf("BubbleSortn"); if(0 >= len) { printf("0 >= lenn"); return 1; } for(i = 0 ;iarr[j+1]) { arr[j] = arr[j] ^ arr[j+1]; arr[j+1] = arr[j] ^ arr[j+1]; arr[j] = arr[j] ^ arr[j+1]; } } } printf("排序后的顺序为:n"); Traverse(arr,len); return 0; }
UINT8 InsertionSort(int arr[],UINT32 len)
{
UINT32 i = 0;
UINT32 j = 0;
int value = 0;printf("InsertionSortn"); if(0 >= len) { printf("0 >= lenn"); return 1; } for(i = 0 ;i=0 ;j--) { if(arr[j] >value) { arr[j+1] = arr[j] ; continue; } arr[j+1] = value; break; } } printf("排序后的顺序为:n"); Traverse(arr,len); return 0; }
void Traverse(int arr[],UINT32 len)
{
UINT32 i = 0;for(i = 0 ; i < len ; i++) { if(i != (len-1)) { printf("%d,",arr[i]); } else { printf("%dn",arr[i]); } } return;}



