文章目录
插入排序
C++
直接插入排序
#include <iostream>
#define N 10
using namespace std;
void straightInsertSort(int r[], int n)
{
  int i, j, temp;
  for (i = 1; i < n; i++)
  {
    // r[i]插入有序子表, r[0]单个元素也为有序子表
    if (r[i] < r[i - 1])
    {
      temp = r[i];  // r[i]暂存到temp
      // 从后向前寻找插入位置,逐个后移,直到找到插入位置
      for (j = i - 1; j >= 0 && r[j] > temp; j--)
      {
        r[j + 1] = r[j];
      }
      r[j + 1] = temp;  //将temp插入r[j + 1] 
    }
  }
}
int main()
{
  int numbers[N] = { 3,2,1,5,6,2,8,6,9,7 };
  straightInsertSort(numbers, N);
  for (int i = 0; i < N; i++)
    cout<<numbers[i]<<" ";
  cout << "\n";
  return 0;
}
希尔排序
#include <iostream>
#define N 10
using namespace std;
void shellSort(int r[], int n)
{
  int gap, i, j, temp;
  // 按步长进行插入排序
  for (gap = n / 2; gap > 0; gap /= 2)
  {
    for (int i = gap; i < n; i += gap)
    {
      // r[i]插入有序子表
      if (r[i] < r[i - gap])
      {
        temp = r[i];  // r[i]暂存到temp
        // 从后向前寻找插入位置,逐个后移,直到找到插入位置
        for (j = i - gap; j >= 0 && r[j] > temp; j -= gap)
        {
          r[j + gap] = r[j];
        }
        r[j + gap] = temp;  //将temp插入r[j + 1] 
      }
    }
  }
}
int main()
{
  int numbers[N] = { 3,2,1,5,6,2,8,6,9,7 };
  shellSort(numbers, N);
  for (int i = 0; i < N; i++)
    cout << numbers[i] << " ";
  cout << "\n";
  return 0;
}
python
直接插入排序
def straight_insert_sort(data):
    for i in range(1, len(data)):
            j = i
            while j >= 1 and data[j-1] > data[j]:
                data[j - 1], data[j] = data[j], data[j - 1]
                j -= 1
if __name__ == '__main__':
    data = [3, 2, 1, 5, 6, 2, 8, 6, 9, 7]
    straight_insert_sort(data)
    print(data)
希尔排序
def shell_sort(data):
    n = len(data)
    # 初始步长
    gap = n // 2
    while gap > 0:
        # 按步长进行插入排序
        for i in range(gap, n):
            j = i
            # 插入排序
            while j >= gap and data[j - gap] > data[j]:
                data[j - gap], data[j] = data[j], data[j - gap]
                j -= gap
        # 得到新的步长
        gap = gap // 2
if __name__ == '__main__':
    data = [3, 2, 1, 5, 6, 2, 8, 6, 9, 7]
    shell_sort(data)
    print(data)