排序算法
直接插入算法
void StraightInsertSort(int arr[], int n)
{
int i, j;
int temp;//监视哨,暂存arr[i]
for (i = 1; i < n; i++) {
//arr[0]有序,从a[1]开始
temp = arr[i];
for (j = i; j > 0 && arr[j - 1] > temp; j--)
arr[j] = arr[j - 1];//大于temp的后移
arr[j] = temp;
}
}
希尔排序
void ShellSort(int arr[], int n)
{
//增量gap,并逐步缩小增量
for (int gap = n / 2; gap > 0; gap /= 2) {
//从第gap个元素开始,逐个对所在组进行直接插入排序
for (int i = gap; i < n; i++) {
int j = i;
int temp = arr[j];
if (arr[j] < arr[j - gap]) {
while (j - gap >= 0 && temp < arr[j - gap]) {
arr[j] = arr[j - gap];
j -= gap;
}
arr[j] = temp;
}
}
}
}
快速排序
算法思想
- 分解:先从数列中取出一个元素作为基准元素。以基准元素为标准,将序列分解为两个子序列,使小于或等于基准元素的子序列在左侧,使大于基准元素在子序列在右侧。<

本文介绍了几种常见的内部排序算法,包括直接插入、希尔排序、快速排序及其改进、简单选择排序和堆排序。在快速排序部分,详细阐述了算法思想,包括分解、治理和合并三个步骤,并讨论了算法的改进,减少了不必要的交换操作。此外,还提及了简单选择排序和堆排序的原理。
最低0.47元/天 解锁文章
2183

被折叠的 条评论
为什么被折叠?



