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電壓下,如果只是燈芯,需另配降壓穩流板才接入220v電壓,不可以直接插入220v電壓。可以的,但要有配套的電路,給你一個使用220v交流電的led電路圖,你參考一下。led燈是不可以直接插入220v電壓的。若做指示燈要串一隻電阻。象插座上就是串了一隻電阻。用於... 電視可以通過wifi連線網路 可以通過光纖貓直接來連線 可以通過路由器連結網線進行上網 可以通過廣電電視 尊敬的海信使用者,您好!首先對您遇到的問題表示歉意,給您帶來不便,請見諒。根據您的描述可能為網路故障,建議您根據產品使用指南將電視機恢復出廠設定後重新連線網路,並建議您將路由器也恢復出廠觀察使用...夢見兩根針插在心臟上,夢見用針直接插入心臟,怎麼回事
請問LED燈可不可以直接插入220V電壓呢
智慧電視怎麼不通過路由器,直接插入網線能看視