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