Java基礎5一數組的常見應用算法

常用算法

1.冒泡排序:

原理:比較兩個相鄰的元素,將值大的元素交換至右端

示例:

public static void bubbleSort(int[] a) {int n = a.length;//總共進行n-1輪的比較for (int i = 1; i < n; i++) {for (int j = 0; j < n - i; j++) {if (a[j] > a[j + 1]) {//交換int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}
}

2.選擇排序:

原理:每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最后,直到全部記錄排序完畢。

示例:

public static void selectionSort(int[] a) {        for(int i = 0; i < a.length - 1; i++) {// 做第i趟排序int m = i;for(int j = i + 1; j < a.length; j++){// 選最小的記錄if(a[j] < a[m]){m = j; //記下目前找到的最小值所在的位置
            }}if(i != m){  //交換a[i]和a[m]int temp = a[i];a[i] = a[m];a[m] = temp;}}    
}

3.插入排序:

原理:從數組的第一個元素a[0]開始,將其后一個元素a[1]插入到a[0]的前面或者后面,接著繼續這一過程。每次都是將a[i]插入到已經排序好的a[0]~a[i-1]中合適的位置

示例:

public static void insertSort(int[] a) {for (int i = 1; i < a.length; i++) {for (int j = i; j > 0; j--) {if (a[j] < a[j - 1]) {int temp = a[j];a[j] = a[j - 1];a[j - 1] = temp;} else {break;}}}
}

4.快速排序:

  • 快速排序是對冒泡排序的一種改進
  • 思想:在數組中找出適當的軸心,然后將數組一分為二,分別對左邊與右邊數組進行排序

二分查找

  • 前提條件: 已排序的數組中查找
  • 二分查找的基本思想是:

    –?首先確定該查找區間的中間點位置:?int mid = (low+upper) / 2;

    –?然后將待查找的值與中間點位置的值比較:

    • 若相等,則查找成功并返回此位置。
    • 若中間點位置值大于待查值,則新的查找區間是中間點位置的左邊區域。
    • 若中間點位置值小于待查值,則新的查找區間是中間點位置的右邊區域。下一次查找是針對新的查找區間進行的。

示例:

public static int binarySearch(int[] a, int num) {int low = 0;                                  // 起點int upper = a.length - 1;              // 終點while (low <= upper) {int mid = (low + upper) / 2;     // 中間點if (a[mid] < num) {                  // 中間點的值小于要查找的值low = mid + 1;                    // 更改查找的起點為中間點位置后一位} else if (a[mid] > num) {        // 中間點的值大于要查找的值upper = mid - 1;                 // 更改查找的終點為中間點位置前一位} else {                                   // 中間點的值等于要查找的值return mid;                         // 返回該位置
        }}return -1;
}            

數組幫助類Arrays

  • java.util.Arrays 數組操作工具
public static void sort(int[] a);  //經過調優的快速排序法
public static int binarySearch(int[] a, int key); //使用二分搜索法

二維數組

  • Java并沒有真正的多維數組,二維數組可以看成以數組為元素的數組。如:
int [][] a = { {1}, {4,5,6}, {7,8}};

?

轉載于:https://www.cnblogs.com/smart-hwt/p/8184354.html

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

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

相關文章

使用Xtend構建Vaadin UI

今天&#xff0c;我決定向Xtend打個招呼。 我希望學習一些新的編程語言。 選擇一個標準的清單并不多。 它必須是在JVM上運行的編程語言&#xff0c; 如果我不需要學習用于建筑應用的全新生態系統&#xff0c;那就太好了。 我已經檢查了幾個選項。 JVM的編程語言列表已不多了…

python 瀏覽器顯示本地文件夾_瀏覽器讀取本地文件

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存儲NAS是一個可共享訪問&#xf…

p15頁

給你一個n*n的01矩陣&#xff0c;只能夠將0變成1&#xff0c;使得每個元素上下左右之和均是偶數&#xff0c; 比如 0 0 0 0 1 0 1 0 0>>>>1 0 1 0 0 0 0 1 0 一個轉變了3步 多實例T 然后一個n&#xff08;n<15&#xff09; 表示n*n的矩陣 …

html 登陸sql server,jsp實現注冊與登錄頁面+sqlsever2008

//index.jspString path request.getContextPath();String basePath request.getScheme()"://"request.getServerName()":"request.getServerPort()path"/";%>登陸用戶登陸用戶名&#xff1a;密 碼:注冊新用戶//Logon.jspString path req…

百度前端學院-基礎學院-第四課

今天是第四天&#xff0c;進度可以&#xff0c;表揚一下自己。 今天的課程目標是&#xff1a;掌握 CSS 稍微復雜的一些選擇器&#xff0c;還有背景&#xff0c;邊框等一些 CSS 樣式屬性。 CSS背景&#xff1a; 背景色&#xff1a;background-color:gray; 背景圖&#xff1a…

JUnit測試方法訂購

直到4.10版為止的Junit都使用反射API返回的測試類中測試方法的順序作為測試方法執行的順序– Class.getMethods&#xff08;&#xff09; 。 引用getMethods&#xff08;&#xff09;api的Javadoc&#xff1a; 返回的數組中的元素未排序&#xff0c;并且沒有任何特定順序。 …

html中padding和margin的區別和用法與存在的bug消除

關于margin&#xff1a;在需要border外側添加距離時。空白處不需要背景時。相連的兩個部分的地方需要加外邊的邊距時使用。 關于padding&#xff1a;在需要border內側添加距離時。空白處需要背景時。相連的兩個部分的地方需要加內部的邊距時使用。 IE6中雙邊距Bug&#xff1a; …

python發微信提醒天氣冷了注意保暖_2019天氣變冷的朋友圈說說 注意保暖的微信問候語...

1.天冷了&#xff0c;注意添加衣物&#xff0c;別著涼。可你還是著涼了。看你難受的樣子&#xff0c;我的心&#xff0c;唉&#xff0c;只有一句話能表達&#xff1a;小樣&#xff0c;你也有今天&#xff01;為了不讓我得逞&#xff0c;你要注意身體哦。2.天氣變涼要注意&#…

Fiddler抓包使用教程-QuickExec

轉載請標明出處&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/73468287 本文出自【趙彥軍的博客】 在 Fiddler 中自帶了一個 QuickExec 命令行&#xff0c;用戶可以直接輸入并快速執行腳本命令。 常見命令 help 打開官方的使用頁面介紹&#xff0c;所有的命令…

自己整理的css3動畫庫,附下載鏈接

動畫調用語法 animation: bounceIn 0.3s ease 0.2s 1 both; 按順序解釋參數&#xff1a; 動畫名稱 如&#xff1a;bounceIn 一周期所用時間 如&#xff1a;0.3s 速度曲線 如&#xff1a;ease 值 描述 linear 動畫從頭到尾的速度是相同的。 ease 默認。動畫以低速開始&#xff0…

帶有Spring的REST的ETag

1.概述 本文將重點介紹ETags-Spring支持&#xff0c;RESTful API的集成測試以及帶有curl的使用場景。 這是關于使用Spring 3.1和Spring Security 3.1和基于Java的配置來建立安全的RESTful Web服務的系列文章的第9篇。 REST with Spring系列&#xff1a; 第1部分 – 使用Spring…

html5與css3都要學嗎,前端要學css3嗎?

前端要學css3&#xff1b;HTML5、CSS3是前端工程師必須要學會。現在移動端的興起&#xff0c;導致web前端開發的技術逐變向css3和html5轉變&#xff0c;所以css3一定要學。CSS3是CSS(層疊樣式表)技術的升級版本&#xff0c;于1999年開始制訂&#xff0c;2001年5月23日W3C完成了…

PHP中cookie和session的區別

1、cookie數據存放在客戶的瀏覽器上&#xff0c;session數據放在服務器上。 2、cookie不是很安全&#xff0c;別人可以分析存放在本地的COOKIE并進行COOKIE欺騙考慮到安全應當使用session。 3、session會在一定時間內保存在服務器上。當訪問增多&#xff0c;會比較占用你服務器…

ubuntu下anaconda3+pygame

有是很無語的地方&#xff0c;網上教程一堆&#xff0c;又是要下載什么包&#xff0c;然后又是什么依賴亂七八糟的整一堆。都不知道怎么想的 試了 sudo apt-get install python-pygame 這個是行不通的&#xff01;&#xff01;&#xff01;根本沒有任何卵用 害我捯飭了半天&am…

react 判斷圖片是否加載完成_React中型項目的優化實踐

項目介紹整個項目大概有60個頁面&#xff0c;用到的組件大概150&#xff0c;package里面的依賴大概有70個&#xff0c;應該勉強算得上是一個中型的React的項目了。下面給大家看看我們現在build一次項目的結果--打包時間約150s&#xff0c;打包完之后的資源gzip之后約1.2m&#…

搭建本地wordpress

1.首先&#xff0c;下載xampp&#xff0c;安裝按默認勾選即可。 2.安裝完成后&#xff0c;啟動Apache和MySQL這兩個服務。 啟動后變成綠色&#xff0c;表示啟動成功。 3.點擊MySQL項的Admin進入數據庫后臺。 4.點擊用戶賬戶新建用戶。 5.填寫用戶名&#xff0c;host name選本地…

編寫Java批注

Java 批注的允許的屬性類型刻意非常嚴格&#xff0c;但是允許的類型也可以使用一些簡潔的復合批注類型。 考慮教程站點中的示例注釋&#xff1a; package annotation; interface ClassPreamble {String author();String[] reviewers(); }在這里&#xff0c;作者和審閱者具有St…

Python基礎【day02】:字符串(四)

在Python中字符串本身有帶很多操作&#xff0c;字符串的特性&#xff0c;不可以被修改 0、字符串常用功能匯總 1、字符串的定義 #定義空字符串>>> name#定義非空字符串 >>> name"luoahong"#通過下標訪問 >>> name[1] u#不能修改字符串的值…

cryptojs vue 使用_VueJs里利用CryptoJs實現加密及解密

第一步 安裝安裝crypto-js第二步 創建在js文件目錄下創建一個js文件secret/*** 對頁面上輸入的密碼進行加密傳輸給后臺進行驗證&#xff0c;對返回的數據進行解密&#xff0c;在頁面展示*/let CryptoJS require(crypto-js); // 引入AES源碼jsexport default {/** 對密碼進行加…

html5 窗口變形,HTML5畫布(變形)

坐標變換案例1&#xff1a;function draw(){var cdocument.getElementById("myCanvas");var cxt c.getContext("2d");cxt.translate(200,50);cxt.fillStylergba(255,0,0,0.25);for(var i0;i<40;i){cxt.translate(25,25);cxt.scale(0.9,0.9);cxt.rotate(…