三種插入排序 直接插入排序,折半插入排序,希爾排序
**
插入排序小結
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較大的情況。
相關文章
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- [java]插入排序及折半插入排序Java排序
- 【筆記】折半插入排序筆記排序
- 排序演算法__折半插入排序排序演算法
- #排序演算法#【2】直接插入排序、希爾排序排序演算法
- 排序演算法之折半插入排序排序演算法
- 直接插入排序排序
- 直接插入排序法排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 希爾排序使用直接插入排序、二分插入排序的C++程式碼實現演算法排序C++演算法
- C語言例題19:折半插入排序C語言排序
- 經典演算法之折半插入排序演算法排序
- 插入排序排序
- 插入排序排序排序
- 【筆記】直接插入排序筆記排序
- 直接插入排序java描述排序Java
- 排序演算法__直接插入排序排序演算法
- 排序演算法:直接插入排序排序演算法
- 排序演算法——直接插入排序排序演算法
- 排序演算法-直接插入排序排序演算法
- 直接插入排序演算法排序演算法
- 排序之插入排序排序
- 03 插入排序排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 全面分析插入排序的三種插入方式排序
- 【資料結構】直接插入排序資料結構排序
- python插入排序Python排序
- 數的插入排序排序
- 插入排序(PHP,C)排序PHP
- 如何理解插入排序?排序
- 【排序演算法動畫解】直接插入排序排序演算法動畫
- 對c語言系統庫函式、堆排序、希爾排序、折半插入排序、快速排序消耗時間的比較C語言函式排序
- 【No.16異常的直接插入排序】排序
- 排序專題 -- (1)插入排序排序
- 選擇排序和插入排序排序
- 排序演算法——插入排序排序演算法
- 連結串列-插入排序排序
- 插入排序以及優化排序優化