希尔排序

    技术2022-07-11  94

    #include<iostream> #include<string> #include <sstream> using namespace std; //ListNode* reverse() void insert(int arr[],int n) { int i,j,d; int key; d = n/2; while(d > 0) { for(int i = d; i < n; i++) { key = arr[i]; j = i-d; while(arr[j] > key && j >=0) { arr[j+d] = arr[j]; j = j-d; } arr[j+d] = key; } d = d/2; } } int main() { int arr[] = {4,6,1,2,3}; //for(int i = 1; i < 5; i++) { insert(arr,5); } for(int i = 0; i < 5; i++) { cout << arr[i] <<endl; } system("pause"); return 0; }

    1、

    #include<stdio.h> void shellSort(int R[], int n) { int i, j, d; int tmp; d = n / 2;//设置增量 while (d > 0)//出口 { for (i = d; i < n; i++)//对所有组采用直接插入排序 { tmp = R[i];//对相隔d个为止一组采用直接插入排序 j = i - d; while (j >= 0&&tmp<R[j]) { R[j + d] = R[j]; j = j - d; } R[j + d] = tmp; } d = d / 2;//减小增量 } } int main() { int arr[] = {3,5,6,2,3,1,9,0}; int n = 8; shellSort(arr,n); //printf("%d\n",arr[i]); for(int i = 0; i < n; i++) { printf("%d\n",arr[i]); } return 0; }

     

    Processed: 0.011, SQL: 9