zoukankan      html  css  js  c++  java
  • 希尔排序

    #include <iostream>
    using namespace std;
    void shellsort(int A[], int l, int h) {
    	if (l < h) {
    		int d;//增量
    		int tmp;
    		int j;
    		int size = h - l + 1;
    		for (d = size / 2; d >= 1; d /= 2) {
    			//组内使用插入排序
    			//d+l是第1组的第2个元素
    			for (int i = d + l; i <= h; i++) {
    				tmp = A[i];
    				j = i - d;//该组中,当前元素的前一个元素
    				//寻找要插入的位置
    				while (j >= l && A[j] > tmp) {
    					swap(A[j], A[j + d]);
    					j = j - d;
    				}
    				A[j + d] = tmp;
    			}
    		}
    	}
    }
    
    int main() {
    	int A[] = { 3,1,2,8,-4,0,11 };
    	shellsort(A, 0, 6);
    	for (int i = 0; i < 7; i++)
    		cout << A[i] << " ";
    }
    
  • 相关阅读:
    CF375D Tree and Queries
    进制转换
    贪心问题
    next_permutation函数
    C++ STL
    一些排序总结
    KMP算法
    围圈报数
    车辆调度—模拟栈的操作
    搜索题
  • 原文地址:https://www.cnblogs.com/yonglin1998/p/11780800.html
Copyright © 2011-2022 走看看