直接插入排序 二分法插入排序 希爾排序 直接選擇排序 堆排序 交換排序 快速排序英文怎麼說

2021-05-11 21:01:05 字數 7139 閱讀 3369

1樓:聽不清啊

直接插入排序:straight insertion sort二分法插入排序: binary sort

希爾排序:shell sort

直接選擇排序:straight select sort堆排序:heap sort

交換排序:swap sort

快速排序:quick sort

基數排序:radix sort

歸併排序:merge sort

2樓:匿名使用者

straightinsertion、binarysort、shellsort、******selectionsort、

quicksort

實現各種常用排序(直接插入排序、二分法排序、直接選擇排序、氣泡排序、希爾排序、快速排序)演算法。 10

3樓:gk騎馬的孩子

演算法思想到處都可以找到,程式**還是得自己去寫,自己親手嘗試過,才更理解其中的原理。

c和c++差別不大,演算法是相同的。

加油吧!

比較直接插入排序,簡單選擇排序,快速排序,堆排序,歸併排序,希爾排序和基數排序的時空效能穩定性和情

4樓:寶石鯊魚

堆排序 n*logn 時間在這裡比較優 不過穩定性差快排 o(nlogn),最壞情況為o(n^2)。在實際應用中,快速排序的平均時間複雜度為o(nlogn)。

比較均衡

直接插入排序,簡單選擇排序 n^2

希爾排序和基數排序 不太瞭解

空間的話 個人認為是一樣的 因為你要用同樣的陣列去存 只是存的順序不同罷了

時間的話 100w以內 快排 最優 100w以上 堆排的優越性就明顯出來了

所以一般快排就可以滿足

利用插入排序,希爾排序,起泡排序,快速排序,選擇排序,堆排序,歸併排序排序方法排序30000個隨機整數

5樓:智慧的默默

#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;

} 我弄了很久才出來,請採納吧!拜託了!

還有若是結果中停止程式,是因為你的資料太多太大,只要重新執行一遍就可以了!

氣泡排序、插入排序、希爾排序 快速排序 歸併排序 堆排序 選擇排序中,哪些演算法是全域性有序的?

6樓:匿名使用者

全域性有序還是穩定?穩定的意思是說,如果排序前a[i]=a[j],i=j,即排序後相對位置改變了。冒泡、插入、歸併、堆排是穩定的,剩下幾種都是不穩定的。

交換類排序,選擇類排序,插入類排序??是什麼?

7樓:匿名使用者

排序技術抄:1交換類排序襲法 2差入排序法 3選擇類排序法。

1交換類排序法:藉助資料元素之間的互相交換進行排序的一種方法。

2插入排序法:將無序序列中的各元素依次插入到已經有序的線性表中。

3暫無。(有待繼續查詢)

交換類排序法:1氣泡排序 2快速排序

1氣泡排序:假設線性表長度為n,在最壞的情況下,氣泡排序需要經過n/2遍的從前到後的掃描和n/2遍的從後往前的掃描,需要比較的次數為n(n-1)/2

2快速排序:從線性表中選取一個元素,設為t,將線性表後面小於t的元素移到前

面,而前面大於t的移到後面,結果就將線性表分成兩部分,t插入到分界線的位置處,將子表再按上述原則進行分割,一直做下去,直到所有的子表為空為止。

插入排序法:1簡單插入排序法 2希爾排序法1選擇排序法:1簡單選擇排序 2堆排序

程式設計實現直接插入排序、直接選擇排序、shell排序、快速排序、堆排序、二路歸併排序等6種排序演算法。 要求:

8樓:匿名使用者

#include

#include

#include

using namespace std;

//要排序的陣列的長度,以及取值的範圍

#define size 10

#define max 10000

//直接插入排序080201

//原理:每次將待排序的記錄,按其關鍵字大小插入到前邊已經排好序的子檔案中的適當位置

int insertsort(int arr,int len)

}return 0;

}//shell排序 希爾排序 8.2.2

/*先取一個小於n的整數d1作為第一個增量,把檔案的全部記錄分成d1個組。

所有距離為dl的倍數的記錄放在同一個組中。先在各組內進行直接插人排序;

然後,取第二個增量d2=delta;j-=delta)while(increment>1);

} //shellsort

/*2.設監視哨的shell排序演算法

演算法分析

1.增量序列的選擇

shell排序的執行時間依賴於增量序列。

好的增量序列的共同特徵:

① 最後一個增量必須為1;

② 應該儘量避免序列中的值(尤其是相鄰的值)互為倍數的情況。

有人通過大量的實驗,給出了目前較好的結果:當n較大時,比較和移動的次數約在nl.25到1.6n1.25之間。

2.shell排序的時間效能優於直接插入排序

希爾排序的時間效能優於直接插入排序的原因:

①當檔案初態基本有序時直接插入排序所需的比較和移動次數均較少。

②當n值較小時,n和n2的差別也較小,即直接插入排序的最好時間複雜度o(n)和最壞時間複雜度0(n2)差別不大。

③在希爾排序開始時增量較大,分組較多,每組的記錄數目少,故各組內直接插入較快,後來增量di逐漸縮小,分組數逐漸減少,而各組的記錄數目逐漸增多,但由於已經按di-1作為距離排過序,使檔案較接近於有序狀態,所以新的一趟排序過程也較快。

因此,希爾排序在效率上較直接插人排序有較大的改進。

3.穩定性

希爾排序是不穩定的。參見上述例項,該例中兩個相同關鍵字49在排序前後的相對次序發生了變化。

//交換排序---氣泡排序,快速排序

//原理:兩兩比較待排序記錄的關鍵字,發現兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。

//氣泡排序080301

int bubblesort(int arr,int len)

if(i0)}}

return 0;

}//列印陣列

int printarr(int arr,int len)

cout<

return 0;

}int main()

cout<<"生成陣列:"<

printarr(arr,len);

// straightselect(arr,len);

// insertsort(arr,len);

// bubblesort(arr,len);

// quicksort(arr,len);

// improvedbubblesort(arr,len);

// shellsort(arr,len);

bucketsort(arr,len);

cout<

printarr(arr,len);

return 0;}

夢見兩根針插在心臟上,夢見用針直接插入心臟,怎麼回事

人類在睡眠中是要做夢的,每個人都有做夢的體驗,雖然大部分動物的大腦結構同人腦都很相似,但沒有看到過有哪位科學家說動物也會做夢。人類的夢境很奇怪,有日常生活的內容,也有特別出奇的怪事,有喜也有憂,有對過去的回憶,有對未來的展望,以及各種不可思議的奇遇。從歷史考證和文獻看來,人類從很早就開始研究夢,至今...

請問LED燈可不可以直接插入220V電壓呢

如果led燈有穩流電子板就能接入220v電壓下,如果只是燈芯,需另配降壓穩流板才接入220v電壓,不可以直接插入220v電壓。可以的,但要有配套的電路,給你一個使用220v交流電的led電路圖,你參考一下。led燈是不可以直接插入220v電壓的。若做指示燈要串一隻電阻。象插座上就是串了一隻電阻。用於...

智慧電視怎麼不通過路由器,直接插入網線能看視

電視可以通過wifi連線網路 可以通過光纖貓直接來連線 可以通過路由器連結網線進行上網 可以通過廣電電視 尊敬的海信使用者,您好!首先對您遇到的問題表示歉意,給您帶來不便,請見諒。根據您的描述可能為網路故障,建議您根據產品使用指南將電視機恢復出廠設定後重新連線網路,並建議您將路由器也恢復出廠觀察使用...