① java中8個基本數據類型到底是指什麼是什麼意思,有什麼作用我需要權威的回答,
boolean byte short int long float double char
② 八大行星的排列順序是什麼
八大行星按照離太陽的距離從近到遠,它們依次為水星、金星、地球、火星、木星、土星、天王星和海王星,
具體數據如下:
1、水星:水星在九大行星中,他的體積排列倒數第二,但是它是離太陽最近的行星。
被除名的冥王星
1930年由美國天文學家湯博發現的冥王星曾被認為是行星,但2006年8月24日召開的國際天文學聯合會第26屆大會,經兩千餘天文學家表決通過——太陽系只有八大行星,不再將傳統九大行星仔嘩之一的冥王星視為行星,而將其列入「矮行星」。
作為行星,要滿足三個條件:
一、以近似圓形的軌道圍繞恆星運轉。
二、質量足夠大,能依靠自身引力使天體呈圓球狀。
三、能逐漸清除其軌道附近的天體。
冥王星因為第三條不符,且冥王星的衛星(冥衛一)過於巨大,形成了雙行星系統,所以根據這個定義,冥王星被除名為矮行星。
③ 幾種排序方法的存儲結構
排序有內部排序和外部排序,內部排序是數據記錄在內存中謹州進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存祥櫻蔽。
我們這里說說八大排序就是內部排序。
當n較大,則應採用時間復雜度為O(nlog2n)的排序方法:快速排序、堆排序或歸並排序序。
快速排序:是目前基於比較的內部排序中被認為是最好的方法,當待排序的關鍵字是隨機分布時,快速排序的平均時間最短;
1.插入排序—直接插入排序(Straight Insertion Sort)
基本思想:
將一個記錄插入到已排序好的有序表中,從而得到一個新,記錄數增1的有序表。即:先將序列的第1個記錄看成是一個有序的子序列,然後從第2個記錄逐個進行插入,直至整個序列有序為止。
要點:設立哨兵,作為臨時存儲和判斷數組邊界之用。
直接插入排序示例:
如果碰見一個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素頌首的後面。所以,相等元素的前後順序沒有改變,從原無序序列出去的順序就是排好序後的順序,所以插入排序是穩定的。
④ c語言對給定的8個數據排序
#include<stdio.h>
main()
{
int i,j,t,a[8];
printf("請輸入8個數:");
for(i=0;i<8;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=0;i<8;i++)
{for(j=i+1;j<8;j++)
{if(a[j]>a[i])
{t=a[i];a[i]=a[j];a[j]=t;}}
}
for(i=0;i<8;i++)
{printf("%d\n",a[i]);}
}
試試這個吧,數組是從a[0]開始的,你讓它從a[1]開始了,還有你循環中用了旦含j。但模冊笑是在循環中沒有沒有用姿啟到j。所以有錯誤。。。
⑤ iOS演算法系列(二)- 八大排序演算法
排序演算法也算是老生常談了,如果你大學專業是計算機或軟體,甚至你參加過國二國三都會學到排序演算法,如果我沒猜錯的話你接觸的第一個演算法是冒泡。
排序演算法老生常談,但確實多少大廠面試題中的必考題。
廢攜攜話不多說,開始正題
常見的八種排序演算法他們的關系如下:
遞歸的最底部情形,是數列的大小是零或一,也就是永遠都已經被排序好了。雖然一直遞歸下去,但是這個演算法總會退出,因為在每次的迭代(iteration)擾亂中,它至少會把一個元素擺到它最後的位置去。
希爾排序是基於插入排序的以下兩點性質而提出改進方法的:
插入排序在對幾乎已經排好序的數據操作時, 效率高, 即可以達到線性排序的效率
但插入排序一般來說是低效的, 因為插入排序每次只能將數據移動一位
希爾排序的基本辯李伏思想是:先將整個待排序的記錄序列分割成為若乾子序列分別進行直接插入排序,待整個序列中的記錄「基本有序」時,再對全體記錄進行依次直接插入排序。
說基數排序之前,我們簡單介紹桶排序:
演算法思想:是將陣列分到有限數量的桶子里。每個桶子再個別排序(有可能再使用別的排序演算法或是以遞回方式繼續使 用桶排序進行排序)。桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序使用線性時間(Θ(n))。但桶排序並不是 比較排序,他不受到 O(n log n) 下限的影響。
簡單來說,就是把數據分組,放在一個個的桶中,然後對每個桶裡面的在進行排序。
例如要對大小為[1..1000]范圍內的n個整數A[1..n]排序
各種排序的穩定性,時間復雜度、空間復雜度、穩定性總結如下圖:
⑥ 數據排序的一般方法有什麼
數據排序方法
好的排序方法可以有效提高排序速度,提高排序效果。
在計算機領域主要使用數據排序方法根據佔用內存的方式不同分為2大類:內部排序方法與外部排序方法。
內部排序方法
若整個排序過程不需要訪問外存便能完成,則稱此類排序問題為內部排序。
內排序的方法有許多種,按所用策略不同,可歸納為五類:插入排序、選擇排序、交換排序、歸並排序和基數排序。
其中,插入排序主要包括直接插入排序和希爾排序兩種;選擇排序主要包括直接選擇排序和堆排序;交換排序主要包括氣(冒)泡排序和快速排序。
外部排序方法
外部排序基本上由兩個相互獨立的階段組成。首先,按可用內存大小,將外存上含n個記錄的文件分成若干長度為k的子文件或段(segment),依次讀入內存並利用有效的內部排序方法對它們進行排序,並將排序後得到的有序子文件重新寫入外存。通常稱這些有序子文件為歸並段或順串;然後,對這些歸並段進行逐趟歸並,使歸並段(有序子文件)逐漸由小到大,直至得到整個有序文件為止。
⑦ 數據進行排序,數據的排序有多種方法
快排,堆排序,冒泡排序,插入排序,簡單選擇排序,歸並排序,基數排序,還有一個外部排序,一共八種
⑧ 幾種經典的數據排序及其Java實現
數據排序方法有很多,比如選擇排序、冒泡法、插入排序、希爾排序、快速排序、歸並排序等,下面給你著重介紹3種:
1、選擇排序
思想
n個記錄的文件的直接選擇排序可經過n-1趟直接選擇排序得到有序結果:
①初始狀態:無序區為R[1..n],有序區為空。
②第1趟排序
在無序區R[1..n]中選出關鍵字最小的記錄R[k],將它與無序區的第1個記錄R[1]交換,使R[1..1]和R[2..n]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。
……
③第i趟排序
第i趟排序開始時,當前有序區和無序區分別為R[1..i-1]和R(i..n)。該趟排序從當前無序區中選出關鍵字最小的記錄 R[k],將它與無序區的第1個記錄R交換,使R[1..i]和R分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。
排序實例
初始關鍵字 [49 38 65 97 76 13 27 49]
第一趟排序後 13 [38 65 97 76 49 27 49]
第二趟排序後 13 27 [65 97 76 49 38 49]
第三趟排序後 13 27 38 [97 76 49 65 49]
第四趟排序後 13 27 38 49 [76 97 65 49 ]
第五趟排序後 13 27 38 49 49 [97 65 76]
第六趟排序後 13 27 38 49 49 65 [97 76]
第七趟排序後 13 27 38 49 49 65 76 [97]
最後排序結果 13 27 38 49 49 65 76 97
2、冒泡法
原理
冒泡排序演算法的運作如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最後一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
演算法分析
演算法穩定性
冒泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以冒泡排序是一種穩定排序演算法。
3、插入排序
插入排序(Insertion Sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到O(1)的額外空間的排序),因而在從後向前掃描過程中,需要反復把已排序元素逐步向後挪位,為最新元素提供插入空間。
演算法描述一般來說,插入排序都採用in-place在數組上實現。具體演算法描述如下:從第一個元素開始,該元素可以認為已經被排序取出下一個元素,在已經排序的元素序列中從後向前掃描如果該元素(已排序)大於新元素,將該元素移到下一位置重復步驟3,直到找到已排序的元素小於或者等於新元素的位置將新元素插入到該位置後重復步驟2~5如果比較操作的代價比交換操作大的話,可以採用二分查找法來減少比較操作的數目。該演算法可以認為是插入排序的一個變種,稱為二分查找排序。
⑨ 八大演算法
演算法中比較常用的有八種演算法,基本演算法的題,都是依靠這些基礎演算法或者結合使用出題的,所以要學會基礎演算法,才有可能去更好的掌握演算法題。
插卜旅銀入排序,又叫直接插入排序。實際中,我們玩撲克牌的時候,就用了插入排序的思想。
基本思想:在待排序的元素中,假設前n-1個元素已有序,現將第n個元素插入到前面已經排好的序列中,使得前n個元素有序。按照此法對所有元素進行插入,直到整個序列有序。但我們並不能確定待排元素中究竟哪一部分是有序的,所以我們一開始只能認為第一個元素是有序的,依次將其後面的元素插入到這個有序序列中來,直到整個序列有序為止。
希爾排序,又稱縮小增量法。其基本思想是:
1>先選定一個小於N的整數gap作為第一增量,然後將所有距離為gap的元素分在同一組,並對每一組的元素進行直接插入排序。然後再取一個比第一增量小的整數作為第二增量,重復上述操作…
2>當增量的大小減到1時,就相當於整個序列被分到一組,進行一次直接插入排序,排序完成。
選擇排序,即每次從待排序列中選出一個最小值,然後放在序列的起始位置,直到全部待排數據排完即可。
如何進行堆排序呢?
步驟如下:
1、將堆頂數據與堆的最後一個數據交換,然後對根位置進行一次堆的向下調整,但是調整時被交換到最後的那個最大的數不參與向下調整。
2、完成步驟1後,這棵樹除最後一個數之外,型宴其餘數又成一個大堆,然後又將堆頂數據與堆的最後一個數據交換,這樣一來,第二大的數就被放到了倒數第二個位置上,然後該數又不參與堆的向下調整…反復執行下去,直到堆中只有一個數據時便結束。此時該序列就是一個升序。
冒泡排序,該排序的命名非常形象,即一個個將氣泡冒出。冒泡排序一趟冒出一個最大(或最小)值。
快速排序是公認的排序之王,快速排序是Hoare於1962年提出的一種二叉樹結構的交換排序演算法,其基本思想為:
任取待排序元素序列中的某元素作為基準值,按照該基準值將待排序列分為兩子序列,左子序列中所有元素均小於基準值,右子序列中所有元素均大於基準值,然後左右序列重復該過程,直到所有元素都排列在相應位置上為止。
歸並排序是採用分治法的一個非常典型的應用。其基本思想是:將已有序的子序合並,從而得到完全有序的序列,即先使每個子序有序,再使子序列段間有序。
計數排序,又叫非比較排序。顧名思義,該演算法不是通過比較數據的大小來進行排序的,而是通過統鎮沒計數組中相同元素出現的次數,然後通過統計的結果將序列回收到原來的序列中。