我们正在努力恢复Google Play商店上的Unionpedia应用程序
传出传入
🌟我们简化了设计以优化导航!
Instagram Facebook X LinkedIn

希尔排序

指数 希尔排序

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的:.

目录

  1. 11 关系: 堆排序大O符号快速排序冒泡排序黄金分割比迭代排序算法插入排序斐波那契数列数组

堆排序

堆排序(Heapsort)是指利用堆這種数据結構所設計的一種排序算法。堆積是一個近似完全二叉樹的結構,並同時滿足堆積的性質:即子結點的键值或索引總是小於(或者大於)它的父節點。.

查看 希尔排序和堆排序

大O符号

大O符号(Big O notation),又稱為漸進符號,是用于描述函数渐近行为的数学符号。更确切地说,它是用另一个(通常更简单的)函数来描述一个函数数量级的渐近上界。在数学中,它一般用来刻画被截断的无穷级数尤其是渐近级数的剩余项;在计算机科学中,它在分析算法复杂性的方面非常有用。 大O符号是由德国数论学家在其1892年的著作《解析数论》(Analytische Zahlentheorie)首先引入的。而这个记号则是在另一位德国数论学家的著作中才推广的,因此它有时又称为朗道符号(Landau symbols)。代表“order of...”(……阶)的大O,最初是一个大写希腊字母“Ο”(omicron),现今用的是大写拉丁字母“O”。.

查看 希尔排序和大O符号

快速排序

快速排序(Quicksort),又稱劃分交換排序(partition-exchange sort),簡稱快排,一種排序算法,最早由東尼·霍爾提出。在平均狀況下,排序 n 個項目要 \ O (n\log n) (大O符号)次比較。在最壞狀況下則需要 O (n^2) 次比較,但這種狀況並不常見。事實上,快速排序 \Theta(n\log n) 通常明顯比其他演算法更快,因為它的內部循环(inner loop)可以在大部分的架構上很有效率地達成。.

查看 希尔排序和快速排序

幂運算(Exponentiation),又稱指數運算,是一種數學運算,表示為 bn。其中,b 被稱為底數,而 n 被稱為指數,其結果為 b 自乘 n 次。同樣地,把 b^n 看作乘方的结果,稱為「 b 的 n 次幂」或「 b 的 n 次方」。 通常指數寫成上標,放在底數的右邊。當不能用上標時,例如在編程語言或電子郵件中,b^n通常寫成b^n或b**n,也可視為超運算,記為bn,亦可以用高德納箭號表示法,寫成b↑n,讀作“ b 的 n 次方”。 當指數為 1 時,通常不寫出來,因為運算出的值和底數的數值一樣;指數為 2 時,可以讀作“ b 的平方”;指數為 3 時,可以讀作“ b 的立方”。 bn 的意義亦可視為: 起始值 1(乘法的單位元)乘上底數(b)自乘指數(n)這麼多次。這樣定義了後,很易想到如何一般化指數 0 和負數的情況:除 0 外所有數的零次方都是 1 ;指數是負數時就等於重複除以底數(或底數的倒數自乘指數這麼多次),即: 以分數為指數的冪定義為b^.

查看 希尔排序和冪

冒泡排序

冒泡排序(Bubble Sort--是一種簡單的排序算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。 冒泡排序對n個項目需要O(n^2)的比較次數,且可以原地排序。儘管這個演算法是最簡單瞭解和實作的排序算法之一,但它對於包含大量的元素的數列排序是很沒有效率的。 冒泡排序是與插入排序擁有相等的執行時間,但是兩種算法在需要的交換次數卻很大地不同。在最壞的情況,冒泡排序需要O(n^2)次交換,而插入排序只要最多O(n)交換。冒泡排序的實現(類似下面)通常會對已經排序好的數列拙劣地執行(O(n^2)),而插入排序在這個例子只需要O(n)個運算。因此很多現代的演算法教科書避免使用冒泡排序,而用插入排序取代之。冒泡排序如果能在內部迴圈第一次執行時,使用一個旗標來表示有無需要交換的可能,也可以把最優情況下的複雜度降低到O(n)。在這個情況,已經排序好的數列就無交換的需要。若在每次走訪數列時,把走訪順序反過來,也可以稍微地改進效率。有時候稱為雞尾酒排序,因為演算法會從數列的一端到另一端之間穿梭往返。 冒泡排序演算法的運作如下:.

查看 希尔排序和冒泡排序

黄金分割比

#重定向 黄金分割率.

查看 希尔排序和黄金分割比

迭代

迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。.

查看 希尔排序和迭代

排序算法

在計算機科學與數學中,一個排序算法(Sorting algorithm)是一種能將一串資料依照特定排序方式进行排列的一種算法。最常用到的排序方式是數值順序以及字典順序。有效的排序算法在一些算法(例如搜尋算法與合併算法)中是重要的,如此這些算法才能得到正確解答。排序算法也用在處理文字資料以及產生人類可讀的輸出結果。基本上,排序算法的輸出必須遵守下列兩個原則:.

查看 希尔排序和排序算法

插入排序

插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到 O(1) 的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。.

查看 希尔排序和插入排序

斐波那契数列

--(意大利语:Successione di Fibonacci),又譯為費波拿契數列、費波那西數列、費氏數列、黃金分割數列。 在數學上,費波那契數列是以遞歸的方法來定義:.

查看 希尔排序和斐波那契数列

数组

在計算機科學中,陣列資料結構(array data structure),簡稱数组(Array),是由相同类型的元素(element)的集合所組成的資料結構,分配一块连续的内存来存储。利用元素的索引(index)可以计算出该元素對應的儲存地址。 最簡單的資料結構類型是一維陣列。例如,索引為0到9的32位元整數陣列,可作為在記憶體位址2000,2004,2008,...2036中,儲存10個變量,因此索引為i的元素即在記憶體中的2000+4×i位址。陣列第一個元素的記憶體位址稱為第一位址或基礎位址。 二维数组,对应于數學上的矩陣概念,可表示為二維矩形格。例如: a.

查看 希尔排序和数组

亦称为 Shell sort,Shell排序。