一.實驗內容
①順序查詢演算法與二分查詢演算法比較。
a.定義兩個函式分別實現順序查詢和二分查詢演算法。
b.主函式中用產生隨機數的方式隨機產生待查資料,通過呼叫口麵編寫函式查詢指定的資料。
c.測試資料分別選擇:在1000 10000 1000001000000個數中查詢指定資料,對比兩個函式的執行時間。
d. 得出結論這兩個演算法哪個效率高。
②樸素演算法與分治演算法計算x的n次方的演算法比較。
a.定義兩個函式實現計算x的n次方的樸素演算法和分治演算法。
b.輸入x和n的值,呼叫這兩個函式計算x的n次方的結果並求這兩個函式的執行時間。
c.得出結論這兩種演算法哪個效率更高。
二.實驗**
#include#include#include#include#includeint main()
for(i=2;i<=n;i++)//利用直接排序法對隨機數組進行排序
}for(i=1;i<=n;i++)//輸出所產生的有序的陣列
printf("\n");//從以產生的有序的陣列中尋找乙個關鍵字
printf("輸入要查詢的關鍵字:");
scanf("%d",&key);
printf("進行順序查詢所迴圈的次數:");
t1=search_seq(s,n,key);
printf("%d\n",t1);
printf("進行折半查詢所迴圈的次數:");
t2=search_bin(s,n,key);
printf("%d\n",t2);
printf("\n\n\n");//換行用
printf("輸入x的值:");
scanf("%d",&x);
printf("輸入冪y的值:");
scanf("%d",&y);
t3=recur_1(x,y);
printf("%d\n",t3);
t4=******_2(x,y);
printf("%d\n",t4);
return 0;
}int search_seq(int a,int b,int c)//計算順序查詢查詢時間
return num1;//返回順序查詢所迴圈的次數
}int search_bin(int a,int b,int c)//計算折半查詢所需時間
else
}end=clock();
return difftime(end,start);//返回分治所需要的時間
}
三.實驗結果
四.實驗總結
折半查詢比順序查詢效率更高,分治遞迴演算法比樸素演算法效率更高。使用合理的排序演算法,能夠極大的提高程式的執行效率,節約時間。
演算法二 二分查詢
1 用最省記憶體的方式查詢資料。2 快速定位ip所在省市 二分每次都通過跟區間中的中間元素對比,將待查詢的區間縮小為一半,直到區間為0或者找到元素。需要重點關注退出條件 mid取值 low和high的更新。二分的時間複雜度o logn logn少的驚人之處和指數的大的驚人之處類似。2的32次方是4億...
排序二 二分查詢法優化插入排序
通俗的插排是對乙個整型陣列進行公升序排序,可以看出每個元素插入到佇列中經過兩個步驟 先是挨個比較,找到自己所在的位置 然後把後面的資料全部移位,然後把元素插入。要把資料插入,移位是必不可少了。那麼,挨個比較倒是可以優化,因為要插入的佇列已經是排序好的,我們可以使用二分法來減少比較的次數。二分法的時間...
二分查詢二(二分查詢的經典變形問題)
主要 int bsearch1 int a,int n,int value else if a mid value else return 1 這段 的處理重點就是 a mid value 時的情況,如果 mid 等於 0,即這個元素已經是陣列的第乙個元素,那毫無疑問,這個元素肯定就是我們要找的 如...