GDPU 算法分析與設計 天碼行空 1

實驗1 排序算法的效率分析

一、【實驗目的】

(1)復習排序算法的實現過程;

(2)設計平均與最壞情況下時間復雜度的數據環境并理解相關含義;

(3)初步了解算法時間復雜度的分析方法。

二、【實驗內容】

至少選擇3種排序算法,要求對每種排序算法設計2組數據,其中一組為最壞情況,一組為一般情況(隨機),數據規模不能少于10000。

記錄不同情況下算法的實際運行時間,同時分析算法最壞情況與平均情況的運行次數。

三、【實驗源代碼】

#include <stdio.h>
#include <stdlib.h>
#include <time.h>// 冒泡排序
void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {// 交換arr[j]和arr[j+1]int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}// 快速排序
void quickSort(int arr[], int low, int high);// 快速排序中的分區操作
int partition(int arr[], int low, int high) {int pivot = arr[high];int i = low - 1;for (int j = low; j < high; j++) {if (arr[j] < pivot) {i++;int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}int temp = arr[i + 1];arr[i + 1] = arr[high];arr[high] = temp;return i + 1;
}// 快速排序遞歸函數
void quickSort(int arr[], int low, int high) {if (low < high) {int pi = partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, pi + 1, high);}
}// 歸并排序中的合并操作
void merge(int arr[], int l, int m, int r) {int n1 = m - l + 1;int n2 = r - m;int L[n1], R[n2];for (int i = 0; i < n1; i++) {L[i] = arr[l + i];}for (int j = 0; j < n2; j++) {R[j] = arr[m + 1 + j];}int i = 0, j = 0;int k = l;while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k] = L[i];i++;} else {arr[k] = R[j];j++;}k++;}while (i < n1) {arr[k] = L[i];i++;k++;}while (j < n2) {arr[k] = R[j];j++;k++;}
}// 歸并排序遞歸函數
void mergeSort(int arr[], int l, int r) {if (l < r) {int m = (l + r) / 2;mergeSort(arr, l, m);mergeSort(arr, m + 1, r);merge(arr, l, m, r);}
}int main() {const int n = 10000;int nums[n];srand(time(NULL));for (int i = 0; i < n; i++) {nums[i] = rand();}int copy[n];for (int i = 0; i < n; i++) {copy[i] = nums[i];}clock_t startTime, endTime;double duration;startTime = clock();bubbleSort(copy, n);endTime = clock();duration = ((double) (endTime - startTime)) * 1000 / CLOCKS_PER_SEC;printf("冒泡排序 %.1f ms\n", duration);for (int i = 0; i < n; i++) {copy[i] = nums[i];}startTime = clock();mergeSort(copy, 0, n - 1);endTime = clock();duration = ((double) (endTime - startTime)) * 1000 / CLOCKS_PER_SEC;printf("歸并排序 %.1f ms\n", duration);for (int i = 0; i < n; i++) {copy[i] = nums[i];}startTime = clock();quickSort(copy, 0, n - 1);endTime = clock();duration = ((double) (endTime - startTime)) * 1000 / CLOCKS_PER_SEC;printf("快速排序 %.1f ms\n", duration);return 0;
}

四、實驗結果
奇了怪了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/710827.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/710827.shtml
英文地址,請注明出處:http://en.pswp.cn/news/710827.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Maven】Maven 基礎教程(二):Maven 的使用

《Maven 基礎教程》系列&#xff0c;包含以下 2 篇文章&#xff1a; Maven 基礎教程&#xff08;一&#xff09;&#xff1a;基礎介紹、開發環境配置Maven 基礎教程&#xff08;二&#xff09;&#xff1a;Maven 的使用 &#x1f60a; 如果您覺得這篇文章有用 ?? 的話&#…

Qt中關于信號與槽函數的思考

信號與槽函數的思考 以pushbutton控件為例&#xff0c;在主界面上放置一個pushbutton控件&#xff0c;點擊右鍵選擇關聯槽函數&#xff0c;關聯一個click函數&#xff0c;如下圖所示&#xff1a; 在該函數中&#xff0c;實現了一個點擊pushbutton按鈕后&#xff0c;彈出一個窗…

nginx使用詳解--反向代理

什么是反向代理&#xff1f; 正向代理&#xff1a; 一般的訪問流程是客戶端直接向目標服務器發送請求并獲取內容&#xff0c;使用正向代理后&#xff0c;客戶端改為向代理服務器發送請求&#xff0c;并指定目標服務器&#xff08;原始服務器&#xff09;&#xff0c;然后由代理…

在極狐GitLab 配置 SSL/https

本文作者 徐曉偉 說明 極狐GitLab https 使用的是 nginx 實現的本文使用的域名是IP 192.168.80.14&#xff08;原因&#xff1a;如果使用域名&#xff0c;必須擁有這個域名的所有權&#xff0c;并增加解析才可以&#xff0c;要不然在 Docker 容器中&#xff0c;無法使用域名檢…

go并發模式之----使用時順序模式

常見模式之二&#xff1a;使用時順序模式 定義 顧名思義&#xff0c;起初goroutine不管是怎么個先后順序&#xff0c;等到要使用的時候&#xff0c;需要按照一定的順序來&#xff0c;也被稱為未來使用模式 使用場景 每個goroutine函數都比較獨立&#xff0c;不可通過參數循環…

DOM 獲取父子節點

DOM 是以樹狀結構排列的&#xff0c;所以父子關系是相對的&#xff0c;當li為我們的目標節點的時候&#xff0c;ul為其父節點&#xff0c;其他li為它的兄弟節點&#xff0c;li里面包含的標簽為子節點&#xff0c;以此類推。 那我們如何找父節點&#xff1f; 元素.parentNode&am…

libigl 網格質量矩陣

文章目錄 一、簡介二、應用三、實現效果參考資料一、簡介 在 libigl 中,igl::massmatrix 是一個用于計算給定三角網格的質量矩陣的函數。質量矩陣在有限元分析和其他模擬技術中非常有用,它通常用于描述網格中各個節點的質量或者用于計算模擬過程中的慣性效應。 igl::massmatr…

分布式系統如何做數據對賬?

前言 在分布式系統中&#xff0c;雖然我們會使用各種分布式事務的方案&#xff0c;來保證各個系統之間的一致性。但是&#xff0c;很多時候往往事與愿違。 尤其是現在很多公司都采用最終一致性的方案&#xff0c;而所謂最終一致性&#xff0c;無論是本地消息表、事務消息、還…

藍橋杯:數組分割(Java)

目錄 問題描述輸入格式輸出格式代碼實現 問題描述 小藍有一個長度為N的數組A[A0,A1,… AN-1]。現在小藍想要從A對應的數組下標所構成的集合Ⅰ0,1,2,…,N -1中找出一個子集R1&#xff0c;那么R1在Ⅰ中的補集為R2。記S1∈∑Ar&#xff0c;S2∈∑Ar&#xff0c;我們要求S1和S2均為…

node 之 npm

1.什么是包 node.js中的第三方模塊又叫做包 就像電腦和計算機指的是相同的東西&#xff0c;第三方模塊和包指的是同一個概念&#xff0c;只不過叫法不同 2.包的來源 不同于 Node.js 中的內置模塊與自定義模塊&#xff0c;包是由第三方個人或團隊開發出來的&#xff0c;免費供所…

【計算機網絡——應用層】http協議

文章目錄 1. http協議1.1 http協議簡介1.2 url組成1.3 urlencode與urldecode 2. http協議的格式2.1 http協議的格式2.2 一些細節問題 3. http的方法、狀態碼和常見響應報頭3.1 http請求方法3.2 http狀態碼3.3 http常見的響應報頭屬性 4. 一個非常簡單的http協議服務端5. http長…

【X806開發板試用】文章一 ubuntu開發環境搭建

一、環境配置 官方鏈接&#xff1a; 環境配置 1.安裝必要的庫和軟件 sudo apt-get install build-essential gcc g make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-b…

pix2pix-zero

pix2pix-zero&#xff1a;零樣本圖像到圖像轉換 論文介紹 Zero-shot Image-to-Image Translation 關注微信公眾號: DeepGoAI 項目地址&#xff1a;https://github.com/pix2pixzero/pix2pix-zero 論文地址&#xff1a;https://arxiv.org/abs/2302.03027 本文介紹了一種名為…

Golang 函數中 defer 和 return 的調用順序

先來看一段代碼&#xff1a; package mainimport "fmt"func f() (ret int) {defer func() {ret}()return 1 } func main() {fmt.Println(f()) }上面這段代碼的輸出是2&#xff0c;不是1 原因在于&#xff1a; 1&#xff09;ret 是在執行 return 1 語句后發生的 2&…

基于SpringBoot多模塊項目引入其他模塊時@Autowired無法注入

基于SpringBoot多模塊項目引入其他模塊時Autowired無法注入 一、問題描述1、解決方案 一、問題描述 啟動Spring Boot項目時報 Could not autowire. No beans of ‘xxxxxxxx’ type found. 沒有找到bean的實例&#xff0c;即spring沒有實例化對象&#xff0c;也就無法根據配置文…

【LeetCode-中等】209.長度最小的子數組-雙指針/滑動窗口

力扣題目鏈接 1. 暴力解法 這道題的暴力解法是兩層嵌套for循環&#xff0c;第一層循環從 i 0 開始遍歷至數組末尾&#xff0c;第二層循環從 j i 開始遍歷至找到總和大于等于 target 的連續子數組&#xff0c;并將該連續子數組的長度與之前找到的子數組長度相比較&#xff0…

傳輸層兩大戰將TCP、UDP的定位

傳輸層 定義一些傳輸數據的協議和端口&#xff0c;傳輸協議同時進行流量控制&#xff0c;根據接收方的數據吞入熟讀&#xff0c;規定適當的發送速率&#xff0c;解決傳輸效率及能力問題 什么是TCP TCP/IP即傳輸控制/網絡協議&#xff0c;是面向連接的協議&#xff0c;發送數…

什么是IP公網?

IP公網是指互聯網上可以公開訪問的IP地址。它是經過互聯網服務提供商&#xff08;ISP&#xff09;向用戶提供的公共網絡IP地址。與之相對的是內網IP地址&#xff0c;內網IP地址一般是由路由器或交換機分配給連接在局域網中的設備使用。 IP公網的作用非常廣泛&#xff0c;可以應…

C#解析JSON

https://blog.csdn.net/weixin_43046974/article/details/131449900 C#解析JSON 1. JSON定義2. JSON一般構成及解析方法3. 解析舉例子 1. JSON對象解析&#xff0c;只包含一層對象{}2. 嵌套JSON對象解析&#xff0c;包含多層對象{}3. JSON數組解析1&#xff08;數組循環遍歷&…

Web APIs知識點講解(階段二)

DOM-事件基礎 一.事件 1.事件 目標&#xff1a;能夠給 DOM元素添加事件監聽 事件:事件是在編程時系統內發生的動作或者發生的事情&#xff0c;比如用戶在網頁上單擊一個按鈕 事件監聽:就是讓程序檢測是否有事件產生&#xff0c;一旦有事件觸發&#xff0c;就立即調用一個函…