/* sort.c */
/* 编程珠玑 */
/* 11 排序 */
/* 直接插入排序 1 */
void insert_sort(int array[], int n)
{
int i , j;
int tmp;
for (i = 1; i < n; i++)
{
for (j = i; j > 0 && array[j - 1] > array[j]; j--)
{
tmp = array[j ];
array[j] = array[j - 1];
array[j - 1] = tmp;
}
}
}
/* 直接插入排序2 */
void insert_sort(int array[], int n)
{
int i, j;
int tmp;
for (i = 1; i < n; i++)
{
tmp = array[i];
for (j = i; j > 0 && array[j - 1] > array[j]; j--)
{
array[j] = array[j - 1];
}
array[j - 1] = tmp;
}
}
/* 快速排序1 */
void qsort(int array[], int l, int u)
{
int m;
int i;
int tmp;
if (l >= u)
{
return;
}
m = l;
for (i = l + 1; i <= u; i++)
{
if (array[i] < array[l])
{
tmp = array[i];
array[i] = array[++m];
array[m] = tmp;
}
}
tmp = array[m];
array[m] = array[l];
array[l] = tmp;
qsort(array, l, m - 1);
qsort(array, m + 1, u);
}
/* 快速排序2 */
void qsort(int array[], int l, int u)
{
int i;
int tmp;
if (l >= u)
{
return;
}
tmp = array[l];
i = l;
j = u + 1;
while (1)
{
do
{
i++;
}while (array[i] < t);
do
{
j--;
}while (array[j] > t);
if (j < i)
{
break;
}
swap(i, j);
}
swap(l, j);
qsort(l, j - 1);
qsort(j + 1, u);
}
编程珠玑 11章 排序
最新推荐文章于 2019-09-04 15:22:19 发布