算法的特性:
有穷性、确定性、可行性、输入、输出。
经典的排序算法:
冒泡排序:
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void bubble(int *array, int n)
{
int i;
int j;
for (i = 0; i < n; i++)
{
for (j = 1; j < n - i; j++)
{
if (array[j - 1] > array[j])
{
swap(&array[j - 1], &array[j]);
}
}
}
}
选择排序
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int minkey(int *array, int low, int high)
{
int min = low;
int key = array[low];
for (int i = low + 1; i < high; i++)
{
if (key > array[i])
{
key = array[i];
min = i;
}
}
return min;
}
void select(int *array, int n)
{
int i;
for (i = 0; i < n; i++)
{
int j = minkey(array, i, n);
if (j != i)
{
swap(&array[i], &array[j]);
}
}
}