#include<stdio.h>
void bubble_sort(int* arr,int len)
{
int i=0,j=0,temp = 0;
for (i = 0; i < len - 1; i++)
{
for (j = 0; j < len - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void select_sort(int* arr, int len)
{
int i = 0, j = 0, temp = 0;
for (i = 0; i < len - 1; i++)
{
for (j = i + 1; j < len; j++)
{
if (arr[i] > arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
void printArr(int* arr, int len)
{
for (int i = 0; i < len; i++)
{
printf("%d\t", arr[i]);
}
printf("\n");
}
void insert_sort(int* arr, int len)
{
int i = 0, j = 0, temp = 0;
for (int i = 1; i < len; i++)
{
j = i;
while (j)
{
if (arr[j] < arr[j - 1])
{
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
j--;
}
}
}
void quick_sort(int* arr, int l,int r)//l为left,r为right,左右两个移动的标签
{
int i = l;
int j = r;
int base = arr[i];//将arr[0]作为基准值,小于它的放左边,大于的放右边
if (l> r)
return;
while (i < j)
{
while (i<j && arr[j]>base)
j--;
if (i < j)
{
arr[i] = arr[j];
i++;
}
while (i < j && arr[i] < base)
i++;
if (i < j)
{
arr[j] = arr[i];
j--;
}
}
arr[i] = base;//i=j,填回中间的坑
quick_sort(arr, l, i - 1);
quick_sort(arr, j + 1, r);
}
int main()
{
int arr[] = { 9,5,7,6,3,2,1,4,8,0 };
int len = sizeof(arr) / sizeof(int);
//bubble_sort(arr, len);
//select_sort(arr, len);
//insert_sort(arr, len);
quick_sort(arr, 0, len - 1);
printArr(arr, len);
getchar();
getchar();
return 0;
}