C语言 数组排序法总结
//快速排序法
void QuickSort(int *a, int left, int right)
{
int i = left;
int j = right;
int k = a[left];
if (i >= j)
{
return;
}
while (i < j)
{
while ((i < j) && (k <= a[j]))
{
j--;
}
a[i] = a[j];
while ((i < j) && (k >= a[i]))
{
i++;
}
a[j] = a[i];
}
a[i] = k;
QuickSort(a, left, i-1);
QuickSort(a, i+1, right);
}
//冒泡排序法
void BubbleSort(int *a, int len)
{
int i, j, k;
for (i=0;i<len-1;i++)
for(j=i+1;j<len;j++)
{
if (a[i] > a[j])
{
k = a[i];
a[i] = a[j];
a[j] = k;
}
}
}
//选择排序法
//找出最小值与第一个位置交换,在剩余的找出最小值与第二个位置交换,以此类推
void SelectSort(int *a, int len)
{
int i, j, k, tmp;
int m;
for (i=0;i<len-1;i++)
{
tmp = a[i];
for (j=i+1;j<len;j++)
{
if (tmp > a[j])
{
tmp = a[j];
k = j;
}
}
if (tmp != a[i])
{
a[k] = a[i];
a[i] = tmp;
}
}
}
//插入排序法
//从第二个位置起依次将此数插入前面,使前面的数保持排好的顺序
void InsertSort(int *a, int len)
{
int i, j, k;
for (i=1;i<len;i++)
{
k = a[i];
for (j=i-1;j>=0;j--)
{
if (a[j] > k)
{
a[j+1] = a[j];
a[j] = k;
}
}
}
}

浙公网安备 33010602011771号