三種插入排序 直接插入排序,折半插入排序,希爾排序
**
插入排序小結
1.直接插入排序
2.折半插入排序
3.希爾排序
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
void ShellInsert(int a[],int dt,int length){
int t,j;
for(int i=dt;i<length;i++)
if(a[i]<a[i-dt]){
t=a[i];
for(j=i-dt;j>=0&&a[j]>t;j=j-dt)
a[j+dt]=a[j];
a[j+dt]=t;
}
}
void ShellSort(int a[],int dt[],int t,int length){
for(int i=0;i<t;i++){
ShellInsert(a,dt[i],length);
}
}
int main()
{
int a[10]={49,38,65,97,76,13,27,49,55,04};
int dt[3]={5,3,1};
ShellSort(a,dt,3,10);
for(int i=0;i<10;i++)
cout <<a[i]<<" ";
return 0;
}
演算法特點:
跳躍式的移動導致不穩定
只能用於順序結構,不能用於鏈式結構
增量陣列可以有多種取法,但應該使增量中的值沒有除1之外的公因子,並且最後一個增量必須是1;
總的比較次數和移動次數比直接插入排序要少,n越大,效果越明顯。所以適合初始記錄無序,n較大的情況。
相關文章
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- 排序演算法__折半插入排序排序演算法
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 排序演算法之折半插入排序排序演算法
- 希爾排序使用直接插入排序、二分插入排序的C++程式碼實現演算法排序C++演算法
- 直接插入排序排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- C語言例題19:折半插入排序C語言排序
- 插入排序排序
- 插入排序排序排序
- 排序演算法__直接插入排序排序演算法
- 排序演算法:直接插入排序排序演算法
- 排序演算法——直接插入排序排序演算法
- 直接插入排序演算法排序演算法
- 03 插入排序排序
- python插入排序Python排序
- 全面分析插入排序的三種插入方式排序
- 如何理解插入排序?排序
- 插入排序-by-Python排序Python
- 插入排序(Insertion Sort)排序
- 排序專題 -- (1)插入排序排序
- 桶排序 選擇,插入排序排序
- 【排序演算法動畫解】直接插入排序排序演算法動畫
- 插入排序以及優化排序優化
- 連結串列-插入排序排序
- JavaScript實現:插入排序!!!JavaScript排序
- 氣泡排序 插入排序 快排排序
- 常用演算法-插入排序演算法排序
- 用JavaScript實現插入排序JavaScript排序
- 三言兩語講排序演算法——插入排序排序演算法
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- 圖解選擇排序與插入排序圖解排序
- PHP 排序演算法之插入排序PHP排序演算法
- 三分鐘看懂插入排序演算法排序演算法
- 淺解前端必須掌握的演算法(三):直接插入排序前端演算法排序
- php插入排序,快速排序,歸併排序,堆排序PHP排序
- 04資料結構排序演算法之直接插入排序資料結構排序演算法
- 實時插入排序演算法排序演算法