1樓:匿名使用者
個人認為是快速排序。
快速排序的最差複雜度可能會降為n^2,最快則是nlogn,但
是,平均情況下是較快的。
而希爾排序的最差情況下,複雜度可能會降為n^s 到n^s之間,(1<=s<=2),平均則是nlog^2n。
理論上來看,希爾排序可能是效率比較高的。
但是,實際情況來看,快速排序的實際效果很不錯。
原因就是,快速排序在實際情況中,壞的情況是不太容易出現的(取中間值或隨機值),
壞情況概率低。
而,希爾排序在實際情況中,效率就取決於他在求解過程中的增量,合理的增量是不好找的。
因此,經常會出現不爽的情況,壞的情況概率高。
氣泡排序 快速排序 希爾排序 按平均時間複雜度角度衡量從好到差順序
2樓:匿名使用者
快速排序o(n*logn)
希爾排序的時間複雜度與增量序列的選取有關,下界是o(n*log2n)
氣泡排序o(n*n)
比較直接插入排序,簡單選擇排序,快速排序,堆排序,歸併排序,希爾排序和基數排序的時空效能穩定性和情
3樓:寶石鯊魚
堆排序 n*logn 時間在這裡比較優 不過穩定性差快排 o(nlogn),最壞情況為o(n^2)。在實際應用中,快速排序的平均時間複雜度為o(nlogn)。
比較均衡
直接插入排序,簡單選擇排序 n^2
希爾排序和基數排序 不太瞭解
空間的話 個人認為是一樣的 因為你要用同樣的陣列去存 只是存的順序不同罷了
時間的話 100w以內 快排 最優 100w以上 堆排的優越性就明顯出來了
所以一般快排就可以滿足
直接插入排序、二分法插入排序、希爾排序、直接選擇排序、堆排序、交換排序、快速排序英文怎麼說?
4樓:聽不清啊
直接插入排序:straight insertion sort二分法插入排序: binary sort
希爾排序:shell sort
直接選擇排序:straight select sort堆排序:heap sort
交換排序:swap sort
快速排序:quick sort
基數排序:radix sort
歸併排序:merge sort
5樓:匿名使用者
straightinsertion、binarysort、shellsort、******selectionsort、
quicksort
快速排序 和桶排序 的區別
6樓:育知同創教育
快速排序 和桶排序 的區別:
雖然表面上看起來兩者很像,桶排序是把資料分到若干個桶裡,再遞專歸地對每一個桶進屬行排序;上述方法一是把(除了arr[piv]以外的)資料分到前後兩個「桶」裡,再遞迴地分別進行排序。但是桶排序在把資料分桶的時候,並不是使用資料本身兩兩比較的方法,而是讀取資料某一位上的值再兩兩比較。這就使得桶排序的遞迴深度可以是常數,而不像上述快排方法一,遞迴深度和資料量 n 有關。
桶排序並不屬於比較排序,也就是說它用到了快速排序、歸併排序等這些排序方法所無法獲取的資訊。(但是你可以用比較排序的方式來實現桶排序。)如果桶排序永遠只使用兩個桶,它與快排的效率是一樣的。
但是桶排序可以使用更多(但是有限)的桶,因為我們事先已經知道資料的範圍,因而知道可以用多少個桶來裝。比如我們知道資料取值是0-99,就可以放心建立10個桶,按照十位上的數字(0到9)將資料分到每個桶裡,而不用擔心出現資料100時沒有對應的桶。但是快排假設我們不知道資料的範圍,因此只能把資料按照「比arr[piv]大還是小」分成兩個桶。
課題31:給出一組實驗來比較下列排序演算法的時間效能: 快速排序、堆排序、希爾排序、氣泡排序、歸併排 10
7樓:匿名使用者
7個以下資料,插入排序有效率。
以上資料,安排有序(順序,逆序),隨機數多組進行測試。
一般來說,快排最快,但是原始資料有序情況下會退化為n平方,需要隨機化。
利用插入排序,希爾排序,起泡排序,快速排序,選擇排序,堆排序,歸併排序排序方法排序30000個隨機整數
8樓:智慧的默默
#include"stdio.h"
#include "stdlib.h"
#include
#include
#include"time.h"
#include
using namespace std;
void insertsort(int* pdataarray, int idatanum)
pdataarray[k] = temp; //插入
} }
} //交換data1和data2所指向的整形
void dataswap(int* data1, int* data2)
*函式名稱:selectionsort
*引數說明:pdataarray 無序陣列;
* idatanum為無序資料個數
*說明: 選擇排序
void selectionsort(int* pdataarray, int idatanum)
}*函式名稱:shellinsert
*引數說明:pdataarray 無序陣列;
* d 增量大小
* idatanum為無序資料個數
*說明: 希爾按增量d的插入排序
void shellinsert(int* pdataarray, int d, int idatanum)
if (j != i - d) //存在比其小的數
pdataarray[j+d] = temp;
} }
*函式名稱:shellsort
*引數說明:pdataarray 無序陣列;
* idatanum為無序資料個數
*說明: 希爾排序
void shellsort(int* pdataarray, int idatanum)
}*函式名稱:bubblesort
*引數說明:pdataarray 無序陣列;
* idatanum為無序資料個數
*說明: 氣泡排序
void bubblesort(int* pdataarray, int idatanum)
int partions(int l,int low,int high)
if(rchild<=size&&a[rchild]>a[max])
if(max!=i)
}}void buildheap(int *a,int size) //建立堆
}void heapsort(int *a,int size) //堆排序
} void mergearray(int a, int first, int mid, int last, int temp)
while (i <= m)
temp[k++] = a[i++];
while (j <= n)
temp[k++] = a[j++];
for (i = 0; i < k; i++)
a[first + i] = temp[i];
} void mergesort(int a, int first, int last, int temp)
}bool mergesort(int a, int n)
int main(int argc, char* argv)
insertsort(aa,30000);
double e=(double)(end.quadpart-start.quadpart)/ (double)freq.quadpart;
printf("插入排序%.10f seconds\n",e);
selectionsort(aa,30000);
e=(double)(end.quadpart-start.quadpart)/ (double)freq.quadpart;
printf("選擇排序%.10f seconds\n",e);
shellsort(aa,30000);
e=(double)(end.quadpart-start.quadpart)/ (double)freq.quadpart;
printf("希爾排序%.10f seconds\n",e);
bubblesort(aa,30000);
e=(double)(end.quadpart-start.quadpart)/ (double)freq.quadpart;
printf("起泡排序%.10f seconds\n",e);
quicksort(aa,30000);
e=(double)(end.quadpart-start.quadpart)/ (double)freq.quadpart;
printf("快速排序%.10f seconds\n",e);
heapsort(aa,30000);
e=(double)(end.quadpart-start.quadpart)/ (double)freq.quadpart;
printf("堆排序%.10f seconds\n",e);
mergesort(aa,30000);
e=(double)(end.quadpart-start.quadpart)/ (double)freq.quadpart;
printf("歸併排序%.10f seconds\n",e);
return 0;
} 我弄了很久才出來,請採納吧!拜託了!
還有若是結果中停止程式,是因為你的資料太多太大,只要重新執行一遍就可以了!
c的stl的sort函式是什麼排序,快速排序嗎
不是簡單的快排 stl的sort 演算法,資料量大時採用quick sort,分段遞迴排序,一旦分段後的資料量專小於某個門檻,為避屬免quick sort的遞迴呼叫帶來過大的額外負荷,就改用insertion sort。如果遞迴層次過深,還會改用heap sort。stl的sort 演算法,抄 資料...
這些痣都是什麼意思,這些痣都是什麼意思
太陽穴有痣 太陽穴是我們身體最重要的部位之一。要是太陽穴漲有痣的話必定能財運不斷,而且朋友特別的多,經常會得到朋友的幫助,無論從事什麼行業都能做得風生水起。在事業上有貴人相助做什麼都順利,再加上有痣的部位是在太陽穴,所以頭腦特別的聰明能做成大事,一生錦衣玉食,大富大貴。地庫有痣 地庫範圍內有痣,主富...
This is my family是什麼意思快
意思是 這是我的家人。其中重要單詞有 family。family的意思是 家庭 指 家庭全體成員 時,為集合名詞,作主語時,謂語動詞要用複數形式。作為 家庭整體 看待時,謂語動詞要用單數形式。謂語動詞無論是單數形式還是複數形式,family都應該用複數代詞指代。family有時可作 子女,孩子 解,...