8640 希爾(shell)排序
時間限制:1000ms **長度限制:10kb
提交次數:1858 通過次數:1304
題型: 程式設計題 語言: g++;gcc
description
用函式實現希爾(shell)排序,並輸出每趟排序的結果,初始增量d=n/2,其後d=d/2
輸入格式
第一行:鍵盤輸入待排序關鍵的個數n
第二行:輸入n個待排序關鍵字,用空格分隔資料
輸出格式
每行輸出一趟排序結果,資料之間用乙個空格分隔
輸入樣例
105 4 8 0 9 3 2 6 7 1
輸出樣例
3 2 6 0 1 5 4 8 7 9
1 0 3 2 4 5 6 8 7 9
0 1 2 3 4 5 6 7 8 9
提示作者 yqm
解題思路:希爾排序是在直接插入排序的基礎上設計的,關鍵是增量和排序的趟數,必須保證最後一趟的增量是1。
直接插入排序:
#include
using
namespace std;
void
print
(int a,
int n)
void
ssort
(int a,
int n)
print
(a,n);}
}int
main()
希爾排序:
#include
using
namespace std;
void
print
(int a,
int n)
void
shellsort
(int a,
int n,
int dt)
}print
(a,n);}
intmain()
插入排序 直接 和 希爾
各大排序的簡介 下面來說說插入排序 插入排序裡面有兩個排序 直接插入排序 基本思想 在要排序的一組數中,假設前面 n 1 n 2 個數已經是排 好順序的,現在要把第n個數插到前面的有序數中,使得這n個數 也是排好順序的。如此反覆迴圈,直到全部排好順序。package sort public clas...
直接插入排序和希爾排序
if defined insertsort h define insertsort h include define maxsize 100 typedef int keytype 關鍵字型別用來比較 typedef char infotype 其他型別的資訊 typedef structrecty...
直接插入排序和希爾排序
一 插入排序 在一組無序的陣列中,假設第乙個有序,每一次陣列中剩餘的元素與第乙個比較,然後逐個插入到乙個有序的序列中,直到這個陣列所有的數字有序為止 二 直接插入演算法 演算法思路 1 我們先假設第乙個有序的數字下標為end,2 下乙個要插入的數字 tmp 繼續構成有序就直接插入,此時end向後挪一...