希爾排序

fushuxuan1發表於2024-04-20
#include <bits/stdc++.h>
using namespace std;
int main(){
	string a="liuyixing"; 
	for(double i=9;i>1;){
		i=round(i/2);
		for(int j=0;j+i<9;j++){
			if(a[j]>a[j+(int)i]){
				swap(a[j],a[j+(int)i]);
			}
		}
	}
	for(int i=0;i<9;i++){
		cout<<a[i]<<" ";
	}

  //對一維陣列中的十個資料進行從小到大排序:

基本思想:是直接插入排序的進階版本

將整個待排序元素序列分割成若干個子序列

(由相隔某個“增量”的元素組成)分別進行直接插入排序然後縮減增量再進行排序

待整個序列中的元素基本有序(增量足夠小)時,在對全體元素進行一次直接插入排序

相關文章