1. 程式人生 > 其它 >(資料結構)希爾排序演算法

(資料結構)希爾排序演算法

技術標籤:資料結構與演算法資料結構排序演算法插入排序

希爾排序是插入排序的一種

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//希爾排序
void shell_sort(int* arr,int length){
    int increment = length / 3 + 1; //間隔
    while(increment >= 1){
        for(int j = increment;j < length;++j){
            int temp =
arr[j]; int k = j - increment; //移動元素 while(k >= 0 && arr[k] > temp){ arr[k + increment] = arr[k]; k -= increment; } arr[k + increment] = temp; } if(increment == 1){ break; //間隔已經是1,退出迴圈
} increment /= 3; ++increment; //重新取間隔 } } void print_arr(int* arr,int length){ cout << "["; for(int i = 0;i<length;++i){ cout << arr[i] << (i == length -1 ? "" : ", "); } cout << "]"
<< endl; } int main() { ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); int arr[] = {1,6,8,3,6,9,7,4,2,3,6,-10,5,4,8,3,10,12}; int length = sizeof(arr) / sizeof(int); shell_sort(arr,length); print_arr(arr,length); return 0; }