常见排序算法
更新时间:
2017.10.20 冒泡,快速,简单选择
1.冒泡排序
void bubble_sort(int a[], int n)
{
int i,j,tmp;
int flag = 1;
for (i=0; (i<n-1)&&(flag==1); i++)
{
flag = 0;
for (j=n-1; j>i; j--)
{
if(a[j-1] > a[j])
{
tmp = a[j-1];
a[j-1] = a[j];
a[j] = tmp;
flag = 1;
}
}
}
}
2.快速排序(递归)
void quick_sort(int a[], int low, int high)
{
int i = low;
int j = high;
int key = a[low];
if (low >= high)
{
return;
}
else
{
while (i < j)
{
while ((i < j) && (a[j] >= key))
{
j--;
}
a[i] = a[j];
while ((i < j) && (a[i] <= key))
{
i++;
}
a[j] = a[i];
}
a[i] = key;
quick_sort(a, low, i-1);
quick_sort(a, i+1, high);
}
}
3.简单选择排序
void select_sort(int a[], int n)
{
int i,j,tmp,min;
for (i=0; i<n-1; i++)
{
min = i;
for (j=n-1; j>i; j--)
{
if (a[j] < a[min])
{
min = j;
}
}
if(min != i)
{
tmp = a[min];
a[min] = a[i];
a[i] = tmp;
}
}
}
浙公网安备 33010602011771号