排序 -- 萬能測試oj

. - 力扣(LeetCode)

?

這道題我們可以使用我們學過的那些常見的排序方法來進行解答?

//插入排序
void InsertSort(int* nums, int n)
{for (int i = 0; i < n-1; i++){int end = i;int tmp = nums[end + 1];while (end >= 0){if (tmp < nums[end]){nums[end + 1] = nums[end];}else{break;}}end--;}
}//希爾
void ShellSort(int* nums, int numsSize) 
{int gap = numsSize;while(gap > 1){gap = gap/2;for(int i =0; i < numsSize - gap; i++){int end = i;int tmp = nums[end+gap];while(end >= 0){if(tmp < nums[end]){nums[end + gap] = nums[end];end -= gap;}else{break;}}nums[end+gap] = tmp;}}
}void Swap(int* a ,int* b)
{int tmp = *a;*a = *b;*b = tmp;
}//選擇排序
void SelectSort(int* nums, int n)
{int left = 0;int right = n-1;while(left < right){int maxi = left, mini = left;for(int i=left+1; i<=right; i++){if(nums[i] > nums[maxi]){maxi = i;}if(nums[i] < nums[mini]){mini = i;}}Swap(&nums[left], &nums[mini]);if(maxi == left){maxi = mini;}Swap(&nums[right], &nums[maxi]);++left;--right;}
}int GetMidi(int* nums, int left, int right)
{int midi = (left + right) / 2;if(nums[left] < nums[midi]){if(nums[midi] < nums[right]){return midi;}else if(nums[left] < nums[right]){return right;}else{return left;}}else{if(nums[midi] > nums[right]){return midi;}else if(nums[left] < nums[right]){return left; }else{return right;}}
}int PartSort(int* nums, int left, int right)
{int midi = GetMidi(nums, left, right);Swap(&nums[midi], &nums[left]);int keyi = left;while(left < right){while(left < right && nums[right] >= nums[keyi]){right--;}while(left < right && nums[left] <= nums[keyi]){left++;}Swap(&nums[left],&nums[right]);}Swap(&nums[keyi],&nums[left]);return left;// int keyi = left;// int prev = keyi;// int cur = prev+1;// while(cur <= right)// {//     if(nums[cur] < nums[keyi] && ++prev != cur)//     {//         Swap(&nums[prev],&nums[cur]);//     }//     ++cur;// }// Swap(&nums[prev],&nums[keyi]);// return prev;
}//快速排序
void QuickSort(int* nums, int begin, int end)
{if(begin >= end){return;}// if((end - begin + 1) > 10)// {//     int keyi = PartSort(nums, begin, end);//     QuickSort(nums, begin, keyi-1);//     QuickSort(nums, keyi+1, end);// }// else// {//     InsertSort(nums + begin, end - begin + 1);// }int keyi = PartSort(nums, begin, end);QuickSort(nums, begin, keyi-1);QuickSort(nums, keyi+1, end);
}void _MergeSort(int* nums, int* tmp, int begin, int end)
{if(end <= begin){return;}int mid = (begin + end) / 2;_MergeSort(nums, tmp, begin, mid);_MergeSort(nums, tmp, mid+1, end);int begin1 = begin, end1 = mid;int begin2 = mid+1, end2 = end;int index = begin;while(begin1 <= end1 && begin2 <= end2){if(nums[begin1] < nums[begin2]){tmp[index++] = nums[begin1++];}else{tmp[index++] = nums[begin2++];}}while(begin1 <= end1){tmp[index++] = nums[begin1++];}while(begin2 <= end2){tmp[index++] = nums[begin2++];}memcpy(nums+begin, tmp+begin, sizeof(int)*(end-begin+1));
}//歸并排序
void MergeSort(int* nums, int n)
{int* tmp = (int*)malloc(sizeof(int)*n);_MergeSort(nums, tmp, 0, n-1);free(tmp);}計數排序
void CountSort(int* nums, int n)
{int min = nums[0], max = nums[0];for(int i = 0; i<n;i++){if(nums[i] < min){min = nums[i];}if(nums[i] > max){max = nums[i];}}int range = max - min + 1;int* tmp = (int*)malloc(sizeof(int)*range);memset(tmp, 0, sizeof(int)*range);for(int i =0;i<n;i++){tmp[nums[i] - min]++; }int j = 0;for(int i =0;i<range;i++){while(tmp[i]--){nums[j++] = i + min;}}
}

?

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

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

相關文章

PyVideoTrans:一款功能全面的視頻翻譯配音工具!【送源碼】

PyVideoTrans是一款功能全面的視頻翻譯配音工具&#xff0c;專為視頻內容創作者設計。它能夠將視頻中的語言翻譯成另一種語言&#xff0c;并自動生成與之匹配的字幕和配音。支持多種語言&#xff0c;包括但不限于中文&#xff08;簡繁體&#xff09;、英語、韓語、日語、俄語、…

10、廣告-用戶數據中心

用戶數據中心 用戶數據中心在程序化廣告中扮演著至關重要的角色&#xff0c;它主要包括DMP原理、用戶畫像邏輯、Look Alike原理和DMP對接DSP四個部分。下面&#xff0c;我們將詳細講解每個部分的內容。 &#xff08;一&#xff09;DMP原理 數據管理平臺&#xff08;Data Man…

Wormhole Filters: Caching Your Hash on Persistent Memory——泛讀筆記

EuroSys 2024 Paper 論文閱讀筆記整理 問題 近似成員關系查詢&#xff08;AMQ&#xff09;數據結構可以高效地近似確定元素是否在集合中&#xff0c;例如Bloom濾波器[10]、cuckoo濾波器[23]、quotient濾波器[8]及其變體。但AMQ數據結構的內存消耗隨著數據規模的增長而快速增長…

MSPM0G3507——串口0從數據線傳輸變為IO口傳輸

默認的跳線帽時這樣的&#xff0c;這樣時是數據線傳輸 需要改成這樣&#xff0c;即可用IO口進行數據傳輸

windows系統本地端口被占用的問題

第一步&#xff1a;查找所有運行的端口 按住“WindowsR”組合鍵&#xff0c;打開命令窗口&#xff0c;輸入【cmd】命令&#xff0c;回車。在彈出的窗口中輸入 命令【netstat -ano】&#xff0c;再按一下回車鍵 Win系統端口被占用-查找所有運行的端口 第二步&#xff1a;查看…

opencv_C++學習筆記(入門30講)

文章目錄 1.配置開發環境2.圖像讀取與顯示3.圖像色彩空間轉換4.圖像對象的創建與賦值5.圖像像素的讀寫操作6.圖像像素的算數操作7.滾動條-調整圖像亮度8.滾動條-調整對比度和亮度9.鍵盤響應操作10.圖像像素的邏輯操作11.圖像的通道分離和合并12.圖像色彩空間轉換13.圖像的像素值…

阿里云存儲的降本增效與運維

小浩負責公司存儲架構層&#xff0c;需要確保存儲層不會成為公司業務系統的性能瓶頸&#xff0c;讓數據讀寫達到最佳性能。那么小浩可以從哪些方面著手優化性能呢&#xff1f;他繼續求助系統架構師大雷。 小浩&#xff1a;雷哥&#xff0c;PD反饋公司系統最近響應很慢&#xff…

HTTP模塊(一)

HTTP服務 本小節主要講解HTTP服務如何創建服務&#xff0c;查看HTTP請求&響應報文&#xff0c;還有注意事項說明&#xff0c;另外講解本地環境&Node環境&瀏覽器之間的鏈路圖示&#xff0c;如何提取HTTP報文字符串&#xff0c;及報錯信息查詢。 創建HTTP服務端 c…

lspci

【原】Linux之PCIE三種空間解析 PCIe學習筆記——2.PCIe配置空間 PCIE學習&#xff08;2&#xff09;PCIE配置空間詳解 開發者分享 | 使用 lspci 和 setpci 調試 PCIe 問題 b : 字節 w&#xff1a;word L&#xff1a; 4byte

LLM - 詞表示和語言模型

一. 詞的相似度表示 (1): 用一系列與該詞相關的詞來表示 (2): 把每個詞表示一個獨立的符號(one hot) (3): 利用該詞上下文的詞來表示該詞 (3): 建立一個低維度的向量空間&#xff0c;用深度學習方法將該詞映射到這個空間里(Word Embedding) 二&#xff1a;語言模型 (1): 根…

Postman中數據文件的高效使用:測試自動化與數據驅動測試實踐

摘要 Postman 是一個強大的 API 開發工具&#xff0c;它不僅支持 API 的設計、開發和測試&#xff0c;還提供了數據驅動測試的功能。通過使用數據文件&#xff0c;我們可以模擬不同的測試場景&#xff0c;實現測試的自動化和重復執行。本文將詳細介紹如何在 Postman 中使用數據…

PHP-實例-CSRF

1 需求 按照用途分類&#xff1a; 會話&#xff08;會話ID和會話令牌 二選一&#xff09; 會話ID&#xff1a;服務器側自動生成&#xff0c;自動存儲在cookie中&#xff0c;需要在服務器側存儲會話令牌&#xff1a;服務器側手動生成&#xff0c;手動存儲在cookie中&#xff0…

7月07日,每日信息差

第一、6 月份&#xff0c;北京、上海、廣州和深圳的新建商品住宅成交量分別環比增加 21%、66%、48% 和 38%&#xff0c;均創年內新高 第二、2024 年世界人工智能大會上&#xff0c;上海向四家企業發放了首批無駕駛人智能網聯汽車示范應用許可&#xff0c;這些企業可以在浦東部…

Redis源碼整體結構

一 前言 Redis源碼研究為什么先介紹整體結構呢?其實也很簡單,作為程序員的,要想對一個項目有快速的認知,對項目整體目錄結構有一個清晰認識,有助于我們更好的了解這個系統。 二 目錄結構 Redis源碼download到本地之后,對應結構如下: 從上面的截圖可以看出,Redis源碼一…

52-5 內網代理2 - LCX端口轉發(不推薦使用LCX)

環境搭建: 本地開3臺虛擬機:kali(必須)、windows2012與2008 (可換成其他windows虛擬機) kali - 網絡配置成橋接模式 windows2012 - 設置兩個網卡,NAT與橋接模式 注意:windows2012要關閉防火墻,要不然其他主機ping不通 關閉防火墻后再開啟遠程桌面連接 windwos20…

去O化神器 Exbase

隨著去O化進程推動&#xff0c;很多舊業務依賴的oracle數據庫&#xff0c;都需要實現做數據庫的替換&#xff0c;當下能很好兼容Oracle&#xff0c;并實現異構數據庫之間轉換的工具并不多。這里給大家推薦一個商業工具數據庫遷移工具exbase&#xff08;北京海量&#xff09;&am…

昇思MindSpore 25天學習打卡營|day18

DCGAN生成漫畫頭像 在下面的教程中&#xff0c;我們將通過示例代碼說明DCGAN網絡如何設置網絡、優化器、如何計算損失函數以及如何初始化模型權重。在本教程中&#xff0c;使用的動漫頭像數據集共有70,171張動漫頭像圖片&#xff0c;圖片大小均為96*96。 GAN基礎原理 這部分原…

想知道你的電腦能不能和如何升級RAM嗎?這里有你想要的一些提示

考慮給你的電腦增加更多的RAM,但不確定從哪里開始?本指南涵蓋了有關升級Windows PC或筆記本電腦中RAM的所有信息。 你需要升級RAM嗎 在深入研究升級RAM的過程之前,評估是否需要升級是至關重要的。你是否經歷過系統滯后、頻繁的BSOD錯誤或應用程序和程序突然崩潰?這些癥狀…

從零開始的python學習生活

pycharm部分好用快捷鍵 變量名的定義 與之前學習過的語言有所不同的是&#xff0c;python中變量名的定義更加的簡潔 such as 整形。浮點型和字符串的定義 money50 haha13.14 gaga"hello"字符串的定義依然是需要加上引號&#xff0c;也不需要寫&#xff1b;了 字符…

Django 常見的操作符

在filter() 方法&#xff0c;exclude() 方法中使用大于&#xff0c;小于&#xff0c;模糊匹配等操作符。 常見的操作符如下&#xff1a; 操作符含義示例等于Book.objects.filter(price10)! 或 __ne不等于用于查找字段不等于特定值的記錄。但更常用exclude()方法。__gt大于用于…