java冒泡排序及面向对象基本概念
文章目錄
- 前言
- 1、排序算法
- 2、冒泡排序
- 3、面向?qū)ο?/li>
前言
提示:這里可以添加本文要記錄的大概內(nèi)容:
例如:隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來(lái)越重要,很多人都開(kāi)啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
1、排序算法
Java中的常見(jiàn)排序算法有:冒泡、插入、選擇、快速、希爾、歸并、堆7種 。
- 非線性時(shí)間比較類排序:通過(guò)比較來(lái)決定元素間的相對(duì)次序,由于其時(shí)間復(fù)雜度不能突破O(nlogn),因此稱為非線性時(shí)間比較類排序。
- 線性時(shí)間非比較類排序:不通過(guò)比較來(lái)決定元素間的相對(duì)次序,它可以突破基于比較排序的時(shí)間下界,以線性時(shí)間運(yùn)行,因此稱為線性時(shí)間非比較類排序。
構(gòu)建一個(gè)亂序的數(shù)組用于進(jìn)行排序
int[] arr=new int[6];//數(shù)據(jù)必須是可比較的,否則不能進(jìn)行排序 Random r=new Random(); for(int i=0;i<arr.length;i++)arr[i]=r.nextInt(100);2、冒泡排序
冒泡排序是一種簡(jiǎn)單的排序算法。它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果它們的順序錯(cuò)誤就把它們交換過(guò)來(lái)。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來(lái)是因?yàn)槊刻吮容^將當(dāng)前數(shù)列未排序部分的最大的元素“沉”到數(shù)列末端,而小的元素會(huì)經(jīng)由交換慢慢“浮”到數(shù)列
for(int i=1;i<arr.length;i++){//用于控制比較次數(shù)for(int k=0;k<arr.length-i;k++){if(arr[k]>arr[k+1]){int temp=arr[k];arr[k]=arr[k+1];arr[k+1]=temp;}} }循環(huán)執(zhí)行次數(shù):(n-1)+(n-2)+(…)+(1)=(n*n-n)/2
平均時(shí)間復(fù)雜度為O(n平方) 空間復(fù)雜度O(1) 穩(wěn)定的排序算法
練習(xí):隨機(jī)生成一個(gè)長(zhǎng)度為10的數(shù)組,進(jìn)行排序
練習(xí)題:
鍵盤錄入多個(gè)整數(shù),點(diǎn)e表示輸入完成,將所有錄入數(shù)據(jù)放入數(shù)組,然后進(jìn)行從大到小排序顯示
自定義方法,用于實(shí)現(xiàn)向數(shù)組中追加數(shù)據(jù),并且將原始數(shù)組長(zhǎng)度加1
3、面向?qū)ο?/h2>
面向?qū)ο蟮娜蠡咎卣魇?#xff1a;封裝、繼承、多態(tài)
- 封裝隱藏了類的內(nèi)部實(shí)現(xiàn)機(jī)制,從而可以在不影響使用者的前提下改變類的內(nèi)部結(jié)構(gòu),同時(shí)保護(hù)了數(shù)據(jù)
- 繼承是為了重用父類代碼,同時(shí)為實(shí)現(xiàn)多態(tài)性作準(zhǔn)備
- 多態(tài)性是發(fā)送消息給某個(gè)對(duì)象,讓該對(duì)象自行決定響應(yīng)何種行為。通過(guò)將子類對(duì)象引用賦值給超類對(duì)象引用 變量來(lái)實(shí)現(xiàn)動(dòng)態(tài)方法調(diào)用。
面向過(guò)程是一種自上而下的程序設(shè)計(jì)方法,主要思路專注于算法的實(shí)現(xiàn)
- 過(guò)程式的特征是以函數(shù)為中心,用函數(shù)作為劃分程序的基本單位;數(shù)據(jù)在過(guò)程式設(shè)計(jì)中處于從屬的位置
- 過(guò)程式設(shè)計(jì)的優(yōu)點(diǎn)是易于理解和掌握,這種逐步細(xì)化問(wèn)題的設(shè)計(jì)方法與大多數(shù)人的思維方式比較接近
- 軟件代碼的重用性很差,即使重用,也是簡(jiǎn)單的復(fù)制和拷貝,代碼數(shù)量急劇增加。而不能直接繼承和應(yīng)用
面向?qū)ο笫且环N自下而上的程序設(shè)計(jì)方法,以數(shù)據(jù)為中心,類是表現(xiàn)數(shù)據(jù)的單位,是劃分程序的基本單位
- 面向?qū)ο笤O(shè)計(jì)是自下而上的特性,允許開(kāi)發(fā)者從問(wèn)題的局部開(kāi)始,在開(kāi)發(fā)過(guò)程中逐步加深對(duì)系統(tǒng)的理解。需 求變化會(huì)作用到系統(tǒng)開(kāi)發(fā)本身,形成一種螺旋式的開(kāi)發(fā)方式
- 面向?qū)ο笤O(shè)計(jì)中,類封裝了數(shù)據(jù),而類的成員函數(shù)作為其對(duì)外的接口,抽象地描述類,用類將數(shù)據(jù)和操作這 些數(shù)據(jù)的函數(shù)放在一起,這就是面向?qū)ο笤O(shè)計(jì)方法的本
類就是模板,也可以說(shuō)類就是創(chuàng)建對(duì)象的基地,能產(chǎn)生出很多不同的對(duì)象
- java語(yǔ)言與其他面向?qū)ο笳Z(yǔ)言一樣,引入類的概念是用來(lái)創(chuàng)建對(duì)象的模板,它包含被創(chuàng)建對(duì)象的狀態(tài)描述和方 法的定義。java是面向?qū)ο笳Z(yǔ)言,它的源文件是由若干個(gè)類組成,源文件的擴(kuò)展名為.java的文本文件
- 要學(xué)習(xí)java編程就必須學(xué)會(huì)怎樣去編寫類,即怎樣用java的語(yǔ)法去描述一類事物共有的屬性和功能。屬性通過(guò) 變量來(lái)刻畫,功能通過(guò)方法來(lái)體現(xiàn),即方法操作屬性形成一定的算法來(lái)實(shí)現(xiàn)一個(gè)具體的功能
類把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝成一個(gè)整體
- 數(shù)據(jù)是描述某種類型的相關(guān)參數(shù)
- 操作是允許執(zhí)行的動(dòng)作
一切事物皆對(duì)象
抽象是從特定的實(shí)例中抽取共同的性質(zhì)以形成一般化概念的過(guò)程
- 把眾多的事物歸納、劃分成類是我們?cè)谡J(rèn)識(shí)世界時(shí)經(jīng)常采用的方法
- 分類所依據(jù)的原則是抽象,也就是忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征
- 找出事物的共性并將具有共同性質(zhì)的事物劃分為同一個(gè)類
如面向?qū)ο蟮姆治鯫OA、面向?qū)ο蟮脑O(shè)計(jì)OOD以及面向?qū)?象的編程實(shí)現(xiàn)OOP
對(duì)象是要進(jìn)行研究的任何事物,從最簡(jiǎn)單的整數(shù)到復(fù)雜的飛機(jī)等均可看作對(duì)象,它不僅能表示具體的事物,還能表 示抽象的規(guī)則、計(jì)劃或事件
在現(xiàn)實(shí)世界中:是客觀世界中的一個(gè)實(shí)體
在計(jì)算機(jī)世界中:是一個(gè)可標(biāo)識(shí)的存儲(chǔ)區(qū)域
現(xiàn)實(shí)世界中所有的事物都是對(duì)象 對(duì)象都具有某些特征,并展現(xiàn)某些行為
對(duì)象的兩個(gè)要素
屬性
- 描述對(duì)象靜態(tài)特性(結(jié)構(gòu)特性)的一個(gè)數(shù)據(jù)項(xiàng), 描述一個(gè)人可用姓名、性別、身份證號(hào)等屬性
- 方法(也稱服務(wù)) 用于描述對(duì)象動(dòng)態(tài)特性(行為特性)的一個(gè)操作系列,每個(gè)人都具有工作、學(xué)習(xí)等行為特性
- 對(duì)象將數(shù)據(jù)和施加于數(shù)據(jù)上的操作打包成一個(gè)不可分割的最基本的模塊,使得僅有該類的有限個(gè)方法才可以 操縱、改變這些數(shù)據(jù),
對(duì)象的狀態(tài)和行為
- 對(duì)象具有狀態(tài),一個(gè)對(duì)象用數(shù)據(jù)值來(lái)描述它的狀態(tài) 對(duì)象還有操作,用于改變對(duì)象的狀態(tài),對(duì)象及其操作就是對(duì)象的行為
- 對(duì)象實(shí)現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對(duì)象的統(tǒng)一體中
總結(jié)
以上是生活随笔為你收集整理的java冒泡排序及面向对象基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【GAMES-202实时渲染】4、3D空
- 下一篇: iOS Podfile修改优化