Java 實現排序

public class Sort {public static void main(String[] args) {int data[] = {43,54,123,5,98,10,7,74,5,54};System.out.println("原先數組:");for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");/*System.out.println("冒泡排序:");MySort.bubleSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println("快速排序:");MySort.quickSort(data, 0, 9);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println("插入排序:");MySort.bInsertSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println("希爾排序:");MySort.shellSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println("選擇排序:");MySort.selectSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");System.out.println(" 堆排序 :");int data2[] = C語言實現8種排序C語言實現8種排序{-1,43,54,123,5,98,10,7,74,5,54};MySort.heapSort(data2, 10);for(int i = 1; i < 11; i++) {System.out.print(data2[i] + "  ");}System.out.println("\n");/*System.out.println("歸并排序:");MySort.mergeSort(data, 0, 9);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");*/System.out.println("基數排序:");MySort.radixSort(data, 10);for(int d : data) {System.out.print(d + "  ");}System.out.println("\n");}
}class MySort {/----------------------冒泡排序----------------------**/public static void bubleSort(int data[], int n) {for(int j = 0; j < n - 1; j++) {for(int i = 0; i < n - j - 1; i++) {if(data[i] > data[i+1]) {int temp = data[i];data[i] = data[i+1];data[i+1] = temp;}}}}/----------------------快速排序----------------------**/public static int findPos(int data[], int low, int high) {int t = data[low];while(low < high) {while(low < high && data[high] >= t) {high--;}data[low] = data[high];while(low < high && data[low] <= t) {low++;}data[high] = data[low];}data[low] = t;return low;}public static void quickSort(int data[], int low, int high) {if(low > high) {return;}int pos = findPos(data, low, high);quickSort(data, low, pos - 1);quickSort(data, pos + 1, high);}/----------------------插入排序----------------------**/public static void bInsertSort(int data[], int n) {int low, high, temp, mid;for(int i = 1; i < n; i++) {low = 0;temp = data[i];high = i - 1;while(low <= high) {mid = (low + high) / 2;if(data[mid] > temp) {high = mid - 1;}else {low = mid + 1;}}int j = i;while((j > low) && data[j-1] > temp) {data[j] = data[j-1];--j;}data[low] = temp;}}/----------------------希爾排序----------------------**/public static void shellSort(int data[], int n) {int key, j;for(int step = n / 2; step > 0; step /= 2) {for(int i = step; i < n; i++) {key = data[i];for(j = i - step; j >= 0 && key < data[j]; j -= step) {data[j+step] = data[j];}data[j+step] = key;}}}/----------------------選擇排序----------------------**/public static void selectSort(int data[], int n) {for(int i = 0; i < n - 1; i++) {int mix = i;for(int j = i + 1; j < n; j++) {if(data[j] < data[mix]) {mix = j;}}if(i != mix) {int temp = data[i];data[i] = data[mix];data[mix] = temp;}}}/----------------------堆排序----------------------**/public static void heapSort(int data[], int n) {for(int i = n / 2; i > 0; i--) {heapAdjust(data, i, n);}for(int i =n; i > 1; i--) {swap(data, 1, i);heapAdjust(data, 1, i - 1);}}public static void swap(int data[], int i, int j) {int temp = data[i];data[i] = data[j];data[j] = temp;}public static void heapAdjust(int data[], int i, int n) {int temp = data[i];for(int j = 2 * i; j <= n; j *= 2) {if(j < n && data[j] < data[j+1]) {j++;}if(temp >= data[j]) {break;}data[i] = data[j];i = j;}data[i] = temp;}/----------------------歸并排序----------------------**/public static void mergeSort(int data[], int first, int last) {int mid = 0;if(first < last) {mid = (first + last) / 2;mergeSort(data, first, mid);mergeSort(data, mid + 1, last);merge(data, first, mid, last);}return;}public static void merge(int data[], int low, int mid, int high) {int[] temp = new int[high-low+1];int k;int left_low = low;int left_high = mid;int right_low = mid+1;int right_high = high;for(k = 0; left_low <= left_high && right_low <= right_high; k++) {if(data[left_low] <= data[right_low]) {temp[k] = data[left_low++];} else {temp[k] = data[right_low++];}}if(left_low <= left_high) {for(int i = left_low; i <= left_high; i++) {temp[k++] = data[i];}}if(right_low <= right_high) {for(int i = right_low; i <= right_high; i++) {temp[k++] = data[i];} }for(int i = 0; i < high-low+1; i++) {data[low+1] = temp[i];}return;}/----------------------基數排序----------------------**/public static int getNumPos(int num, int pos) {int temp = 1;for(int i = 0; i < pos - 1; i++) {temp *= 10;}return (num / temp) % 10;}public static void radixSort(int data[], int n) {int num = 0;int index = 0;int k = 0;int[][] radixArrays = new int[10][];for(int i = 0; i < 10; i++) {radixArrays[i] = new int[n+1];radixArrays[i][0] = 0;}for(int pos = 1; pos <= 31; pos++) {for(int i = 0; i < n; i++) {num = getNumPos(data[i], pos);index = ++radixArrays[num][0];radixArrays[num][index] = data[i];}int j = 0;for(int i = 0; i < 10; i++) {for(k = 1; k <= radixArrays[i][0]; k++) {data[j++] = radixArrays[i][k];}radixArrays[i][0] = 0;}}}
}

?

轉載于:https://www.cnblogs.com/Firesun/p/10144489.html

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

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

相關文章

相機幀率和曝光時間的關系

文章轉載自&#xff1a;http://blog.163.com/pluto_918/blog/static/203853902012111255634175/ 工業相機參數之幀率相關知識詳解&#xff1a; 工業相機是機器視覺系統的重要組成部分之一&#xff0c;在機器視覺系統中有著非常重要的作用。工業相機已經被廣泛應用于工業生產線…

班長的選舉

/* Note:Your choice is C IDE */ #include "stdio.h" #include "string.h" void main() {int zs,ls,ww,zl;//定義一個給參選人員的票數int max;//int xuhao;//char name[5];//參選人員的名字zslswwzl0;//初始票數都為0printf("候選人名單如下\n"…

jquery刷新頁面

window.location.reload()刷新當前頁面. parent.location.reload()刷新父親對象&#xff08;用于框架&#xff09; opener.location.reload()刷新父窗口對象&#xff08;用于單開窗口&#xff09; top.location.reload()刷新最頂端對象&#xff08;用于多開窗口&#xff09; 轉…

Python 常量

總結&#xff1a;在Python中實際中沒有嚴格的常量&#xff1b;知識程序員中約定俗成用變量名全部大寫代表常量 常量的定義&#xff1a; 常量即指不變的量&#xff0c;如pai 3.141592653..., 或在程序運行過程中不會改變的量 舉例&#xff0c;假如老男孩老師的年齡會變&#xff…

SlickOne 敏捷開發框架介紹(二) -- 多用戶/多租戶/SAAS軟件基礎框架實現

前言&#xff1a;在應用于集團版客戶或SAAS平臺服務的業務系統中&#xff0c;流程管理系統需要支持多用戶組織模型。其中包括角色數據、流程定義數據和流程實例數據的多用戶標識綁定。本文旨在全面描述如何基于SlickOne敏捷開發框架實現上述基礎服務功能&#xff0c;形成一個完…

工業相機行曝光與全局曝光

工業相機行曝光與全局曝光 逐行曝光&#xff1a; 圖1 逐行曝光模式 逐行曝光sensor 實現如圖1逐行曝光模式所示。與全局曝光不同&#xff0c;逐行曝光從第一行開始曝光&#xff0c;一個行周期之后第二行才開始曝光。依次類推&#xff0c;經過N-1 行后第N 行開始曝光。第一行曝光…

【Alpha階段匯總】成果展示與體驗總結

一、燃盡圖 二、軟件截圖 三、代碼與圖片、音樂素材倉庫 git倉庫 四、問題與總結 1.git提交問題 之前創建的倉庫地址是http://git.oschina.net/8265559926/groupnet14 但是無論怎么輸入都說找不到倉庫 經反復思考&#xff0c;感覺可能是因為地址不是純字母的原因。就重新注冊了…

Accusoft結構化工具包FormSuite for Structured Forms常見問題解答(二)

FormSuite for Structured Forms是結構化的表單處理SDK和字符識別工具套包&#xff0c;包括表單處理工具FormFix和字符識別工具SmartZone。所有表格處理控件被設計為可以通過內存到內存的數據傳輸模式進行相互溝通。本文收集了一些FormSuite for Structured Forms常見問題及解答…

構建之法閱讀筆記二

構建之法閱讀筆記之二&#xff08;4-11章節&#xff09; 在這之前我不注重代碼的規范性&#xff0c;也不是很注重代碼風格的規范&#xff0c;也沒有對自己寫的代碼進行審查的過程 根據書中所講的這樣寫即使是自己的能力很強&#xff0c;寫的代碼只有自己可以看懂&#xff0c;別…

SVAC國家標準介紹

[摘要] 標準給人的感覺既熟悉又陌生;說熟悉&#xff0c;每天都會聽到這個名詞;從食品衛生到高科技&#xff0c;好像都離不開;說陌生&#xff0c;標準的數量以萬計&#xff0c;包羅萬象&#xff0c;其內容和目標鮮為人知。以SVAC標準來說&#xff0c;粗看內容和H.264等標準和差不…

JDBC批量操作性能提升

JDBC當使用INSERT INTO....VALUES()語句批量插入的時候&#xff0c;應該使用JDBC的PreparedStatement的批量操作方法&#xff0c;而不是採用一條一條運行的方法。比如&#xff08;來源&#xff1a;http://superjavason.iteye.com/blog/255423&#xff09;&#xff1a;如上圖&am…

python學習筆記第9天《文件的管理辦法》

1&#xff0c;文件路徑&#xff1a; 絕對路徑&#xff1a;d:\programfiles\python3.exe 即從根目錄開始一直向下找到的文件 相對路徑&#xff1a;從當前文件路徑開始的路徑名稱2&#xff0c;編碼方式&#xff1a;utf-8,gbk,unicode等等 文件是用什么格式寫…

SVAC 2.0安全系統組成

SVAC2.0標準的一個很主要的特點就是視頻安全和加密認證相比SVAC1.0更加規范&#xff0c;在視頻安全方面更加重視。 通過信源層面的加密技術&#xff0c;實現端到端視頻數據加密&#xff0c;構建更強大、更完整的視頻安全體系。基于SVAC 2.0標準研究建立的安全系統&#xff08;…

【MySQL】(4)操作數據表中的記錄

1. 插入記錄INSERT 方法一&#xff1a; INSERT [INTO] tbl_name [(clo_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...; 比如&#xff1a; CREATE TABLE users( id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL, password VA…

【技術知識】SVAC 2.0安全技術淺析

2017-09-26 08:52 加密可以有效保護數據的機密性&#xff0c;防止非授權訪問和非法監聽。簽名可以識別視音頻的產生源以及所對應的視音頻數據是否完整或被篡改。SVAC 2.0標準規定了加密和簽名接口及數據格式&#xff0c;支持對數據的安全保護&#xff0c;以統一的語法格式支持…

別再管你的API叫微服務了

你有沒有聽過這句名言&#xff1a;“計算機科學領域只有兩個難題&#xff0c;緩存失效和命名”&#xff1f;據說這句話是Phil Karlton在1996年或1997年左右說的。圍繞這句格言確實出現了很多帶有喜劇色彩的說法&#xff0c;它們也提到了其他的一些問題&#xff0c;但最近我對AP…

第一篇JavaScript基礎

1.什么是JavaScript 2.核心語法&#xff0c;變量 先聲明&#xff0c;再賦值 var i;i0; 同時聲明并賦值變量 var x,y,z0; 不聲明直接賦值u2&#xff08;變量可以不經過聲明直接賦值&#xff0c;但是容易出錯&#xff0c;這種方法不建議采納&#xff09;3. 3.核心語法&#xff0…

透過迷霧不再迷茫 淺析海康威視透霧技術

頻監控的需求主要分為兩類&#xff0c;白天的需求和夜間的需求。夜間效果主要的提升之道以低照度和補光居多&#xff0c;也就造成了現在市面上白光補光、紅外補光、激光補光等各式各樣的攝像機盛行;非補光類的&#xff0c;當屬星光級超級照度是為當下熱門。而關于白天效果的提升…

抓包工具

前言&#xff1a; Charles是在 Mac 下常用的網絡封包截取工具&#xff0c;在做移動開發時&#xff0c;我們為了調試與服務器端的網絡通訊協議&#xff0c;常常需要截取網絡封包來分析。 一、主界面介紹 二、網頁抓包 啟動 Charles 后&#xff0c;需要將 Charles 設置成系統代理…

【Python數據分析】魔術命令(Magic Command)

IPython有一些特殊的命令&#xff08;被稱為魔術命令&#xff09;&#xff0c;他們有的為常見的任務提供便利&#xff0c;有的則使你能夠輕松的控制IPython系統的行為 魔術命令是以百分號%為前綴的命令 常用的IPython魔術命令 命令 說明 %quickref 顯示IPytho…