C語言基本排序算法之shell排序?qū)嵗?/h1>
更新時(shí)間:2017年09月27日 10:35:14 作者:liyuxia713
這篇文章主要介紹了C語言基本排序算法之shell排序,結(jié)合具體實(shí)例形式分析了基于C語言的shell排序原理與實(shí)現(xiàn)技巧,代碼注釋中備有詳細(xì)的說明,需要的朋友可以參考下
本文實(shí)例講述了C語言基本排序算法之shell排序。分享給大家供大家參考,具體如下:
shell排序是對直接插入方法的改進(jìn)方法.
/*-------------------------------------------------------------------------------------
Shell_sort.h
shell排序是對直接插入方法的改進(jìn),它并不是對相鄰元素進(jìn)行比較,而是對一定間隔的元素比較.
選擇增量序列的幾種方法:(為方便,本例采用第一種增量序列)
1. h[1]=size, h[k] = h[k-1]/2.
最壞運(yùn)行時(shí)間為O(N^2).
最壞情形:數(shù)組長度為2^n,數(shù)組的偶數(shù)位置上同是一個(gè)數(shù),奇數(shù)位置上也同是一個(gè)數(shù),
且比偶數(shù)位置的小。此時(shí)到最后一次遍歷前shell排序?qū)嶋H上什么也沒做。
最后一次遍歷相當(dāng)于直接插入方法。
2. Hibbard增量序列: h = 1,3,7,,2^k-1
這個(gè)的區(qū)別于上的主要的特點(diǎn)是相鄰增量沒有公因子
最壞運(yùn)行時(shí)間為O(n^{1.5});
3. Sedgewick增量序列:{1,5,19,41,109,}
-------------------------------------------------------------------------------------*/
#ifndef SHELL_SORT_H
#define SHELL_SORT_H
#include "typedef.h"
void Shell_sort(T* a, int n)
{
for(int gap = n; gap > 0; gap = gap/2)
{
for(int i = 0; i != n; ++i)
{
T temp = a[i];
int j = i - gap;
for( ; j >= 0 && a[j] > temp; j = j-gap)
a[j+gap] = a[j];
a[j+gap] = temp;
}
}
}
#endif
希望本文所述對大家C語言程序設(shè)計(jì)有所幫助。
相關(guān)文章
-
C++中delete和delete[]的區(qū)別詳細(xì)介紹
一直對C++中的delete和delete[]的區(qū)別不甚了解,今天遇到了,上網(wǎng)查了一下,得出了結(jié)論,拿出來和大家分享一下 2012-11-11
-
C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲
這篇文章主要為大家詳細(xì)介紹了C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2018-06-06
-
C# interface與delegate效能比較的深入解析
本篇文章是對C#中interface與delegate的效能比較進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下 2013-05-05
-
C語言數(shù)組長度的計(jì)算方法實(shí)例總結(jié)(sizeof與strlen)
數(shù)組一旦創(chuàng)建,程序運(yùn)行期間,長度不可改變,下面這篇文章主要給大家介紹了關(guān)于C語言數(shù)組長度的計(jì)算方法,主要利用的是sizeof與strlen,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下 2022-06-06
-
數(shù)據(jù)結(jié)構(gòu)C語言鏈表的實(shí)現(xiàn)介紹
大家好,本篇文章主要講的是數(shù)據(jù)結(jié)構(gòu)C語言鏈表的實(shí)現(xiàn)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下 2021-12-12
-
udp socket客戶端和udp服務(wù)端程序示例分享
這篇文章主要介紹了udp socket客戶端和udp服務(wù)端程序示例,需要的朋友可以參考下 2014-03-03
-
C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn)程序設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2022-06-06
最新評論
本文實(shí)例講述了C語言基本排序算法之shell排序。分享給大家供大家參考,具體如下:
shell排序是對直接插入方法的改進(jìn)方法.
/*------------------------------------------------------------------------------------- Shell_sort.h shell排序是對直接插入方法的改進(jìn),它并不是對相鄰元素進(jìn)行比較,而是對一定間隔的元素比較. 選擇增量序列的幾種方法:(為方便,本例采用第一種增量序列) 1. h[1]=size, h[k] = h[k-1]/2. 最壞運(yùn)行時(shí)間為O(N^2). 最壞情形:數(shù)組長度為2^n,數(shù)組的偶數(shù)位置上同是一個(gè)數(shù),奇數(shù)位置上也同是一個(gè)數(shù), 且比偶數(shù)位置的小。此時(shí)到最后一次遍歷前shell排序?qū)嶋H上什么也沒做。 最后一次遍歷相當(dāng)于直接插入方法。 2. Hibbard增量序列: h = 1,3,7,,2^k-1 這個(gè)的區(qū)別于上的主要的特點(diǎn)是相鄰增量沒有公因子 最壞運(yùn)行時(shí)間為O(n^{1.5}); 3. Sedgewick增量序列:{1,5,19,41,109,} -------------------------------------------------------------------------------------*/ #ifndef SHELL_SORT_H #define SHELL_SORT_H #include "typedef.h" void Shell_sort(T* a, int n) { for(int gap = n; gap > 0; gap = gap/2) { for(int i = 0; i != n; ++i) { T temp = a[i]; int j = i - gap; for( ; j >= 0 && a[j] > temp; j = j-gap) a[j+gap] = a[j]; a[j+gap] = temp; } } } #endif
希望本文所述對大家C語言程序設(shè)計(jì)有所幫助。
相關(guān)文章
C++中delete和delete[]的區(qū)別詳細(xì)介紹
一直對C++中的delete和delete[]的區(qū)別不甚了解,今天遇到了,上網(wǎng)查了一下,得出了結(jié)論,拿出來和大家分享一下2012-11-11C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲
這篇文章主要為大家詳細(xì)介紹了C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06C# interface與delegate效能比較的深入解析
本篇文章是對C#中interface與delegate的效能比較進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C語言數(shù)組長度的計(jì)算方法實(shí)例總結(jié)(sizeof與strlen)
數(shù)組一旦創(chuàng)建,程序運(yùn)行期間,長度不可改變,下面這篇文章主要給大家介紹了關(guān)于C語言數(shù)組長度的計(jì)算方法,主要利用的是sizeof與strlen,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06數(shù)據(jù)結(jié)構(gòu)C語言鏈表的實(shí)現(xiàn)介紹
大家好,本篇文章主要講的是數(shù)據(jù)結(jié)構(gòu)C語言鏈表的實(shí)現(xiàn)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2021-12-12udp socket客戶端和udp服務(wù)端程序示例分享
這篇文章主要介紹了udp socket客戶端和udp服務(wù)端程序示例,需要的朋友可以參考下2014-03-03C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn)程序設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06