#include <stdio.h>
void BubbleSort(int arr[],int n)
{
int i,j,tmp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(arr[j] > arr[j+1])
{
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
void SelectSort(int arr[],int n)
{
int i,j,tmp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(arr[i] < arr[j])
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
void insert_sort(int arr[],int n)
{
int i,j,tmp;
for(i=1;i<n;i++)
{
tmp = arr[i];
j = i-1;
while(tmp > arr[j])
{
arr[j+1] = arr[j];
j--;
if(j==-1)
break;
}
arr[j+1] = tmp;
}
}
int partitions(int arr[],int low,int high)
{
int pivotkey = arr[low];
while(low<high)
{
while(low < high && arr[high] >= pivotkey)
--high;
arr[low] = arr[high];
while(low < high && arr[low] <= pivotkey)
++low;
arr[high] = arr[low];
}
arr[low] = pivotkey;
return low;
}
void QuickSort(int arr[],int low,int high)
{
int pivottag;
if(low < high)
{
pivottag = partitions(arr,low,high);
QuickSort(arr,low,pivottag-1);
QuickSort(arr,pivottag+1,high);
}
}
void print(int arr[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("arr[%d] = %d\n",i,arr[i]);
}
}
int main(void)
{
int arr[] = {87,23,4,12,67,32};
int n;
n = sizeof(arr)/sizeof(int);
printf("快速排序 (从大到小)\n");
QuickSort(arr,0,n-1);
print(arr,n);
printf("-------------------------\n");
printf("插入排序 (从大到小)\n");
insert_sort(arr,n);
print(arr,n);
printf("-------------------------\n");
printf("冒泡排序 (从小到大)\n");
BubbleSort(arr,n);
print(arr,n);
printf("-------------------------\n");
printf("选择排序 (从大到小)\n");
SelectSort(arr,n);
print(arr,n);
return 0;
}