1、水仙花數算法
水仙花數是指一個 n 位數 ( n≥3 ),它的每一個位上的數字的 n 次冪之和等於它自己。(例如:1^3 + 5^3+ 3^3 = 153)排序
水仙花數只是自冪數的一種,嚴格來講三位數的3次冪數才成爲水仙花數。內存
附:其餘位數的自冪數名字it
一位自冪數:獨身數class
兩位自冪數:沒有方法
三位自冪數:水仙花數數據
四位自冪數:四葉玫瑰數計算機
五位自冪數:五角星數移動
六位自冪數:六合數di
七位自冪數:北斗七星數
八位自冪數:八仙數
九位自冪數:九九重陽數
十位自冪數:十全十美數
2、排序
排序是計算機內常常進行的一種操做,其目的是將一組"無序"的記錄序列調整爲"有序"的記錄序列。份內部排序和外部排序。若整個排序過程不須要訪問外存便能完成,則稱此類排序問題爲內部排序。反之,若參加排序的記錄數量很大,整個序列的排序過程不可能在內存中完成,則稱此類排序問題爲外部排序。內部排序的過程是一個逐步擴大記錄的有序序列長度的過程。
概念描述
將雜亂無章的數據元素,經過必定的方法按關鍵字順序排列的過程叫作排序。假定在待排序的記錄序列中,存在多個具備相同的關鍵字的記錄,若通過排序,這些記錄的相對次序保持不變,即在原序列中,ri=rj,且ri在rj以前,而在排序後的序列中,ri仍在rj以前,則稱這種排序算法是穩定的;不然稱爲不穩定的。
常見排序算法
快速排序、希爾排序、堆排序、直接選擇排序不是穩定的排序算法,而基數排序、冒泡排序、直接插入排序、折半插入排序、歸併排序是穩定的排序算法
概述
內排序的方法有許多種,按所用策略不一樣,可概括爲五類:插入排序、選擇
排序、交換排序、歸併排序和分配排序。
其中,插入排序主要包括直接插入排序和希爾排序兩種;選擇排序主要包括直接選擇排序和堆排序;交換排序主要包括氣(冒)泡排序和快速排序。
穩定排序:假設在待排序的文件中,存在兩個或兩個以上的記錄具備相同的關鍵字,在
用某種排序法排序後,若這些相同關鍵字的元素的相對次序仍然不變,則這種排序方法
是穩定的。其中冒泡,插入,基數,歸併屬於穩定排序,選擇,快速,希爾,堆屬於不穩定排序。
就地排序:若排序算法所需的輔助空間並不依賴於問題的規模n,即輔助空間爲O(1),
則稱爲就地排序
3、冒泡排序
冒泡排序(Bubble Sort,臺灣譯爲:泡沫排序或氣泡排序)是一種簡單的排序算法。它重複地走訪過要排序的數列,一次比較兩個元素,若是他們的順序錯誤就把他們交換過來。走訪數列的工做是重複地進行直到沒有再須要交換,也就是說該數列已經排序完成。
這個算法的名字由來是由於越大的元素會經由交換慢慢「浮」到數列的頂端,故名。
已知一組無序數據a[1]、a[2]、……a[n],需將其按升序排列。首先比較a[1]與a[2]的值,若a[1]大於a[2]則交換二者的值,不然不變。再比較a[2]與a[3]的值,若a[2]大於a[3]則交換二者的值,不然不變。再比較a[3]與a[4],以此類推,最後比較a[n-1]與a[n]的值。這樣處理一輪後,a[n]的值必定是這組數據中最大的。再對a[1]~a[n-1]以相同方法處理一輪,則a[n-1]的值必定是a[1]~a[n-1]中最大的。再對a[1]~a[n-2]以相同方法處理一輪,以此類推。共處理n-1輪後a[1]、a[2]、……a[n]就以升序排列了。降序排列與升序排列相相似,若a[1]小於a[2]則交換二者的值,不然不變,後面以此類推。 總的來說,每一輪排序後最大(或最小)的數將移動到數據序列的最後,理論上總共要進行n(n-1)/2次交換。
優勢:穩定;
缺點:慢,每次只能移動相鄰兩個數據。
4、選這排序
選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄做爲有序序列中第i個記錄。基於此思想的算法主要有簡單選擇排序、樹型選擇排序和堆排序。
簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增加直到所有排序完畢。