1. 程式人生 > >怎麼寫一個氣泡排序,遞迴,單例模式的使用

怎麼寫一個氣泡排序,遞迴,單例模式的使用

package 氣泡排序;
import java.util.Arrays;
/**
 * 氣泡排序改進版
 * @author zjn
 *
 */
public class BubbleSort1 {
    public static void BubbleSort(int[] arr) {
        boolean flag = true;
        while(flag){
            int temp;//定義一個臨時變數
            for(int i=0;i<arr.length-1;i++){//冒泡趟數,n-1趟
                for
(int j=0;j<arr.length-i-1;j++){ if(arr[j+1]<arr[j]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; flag = true; } } if(!flag){ break
;//若果沒有發生交換,則退出迴圈 } } } } public static void main(String[] args) { int arr[] = new int[]{1,6,2,2,5}; BubbleSort.BubbleSort(arr); System.out.println(Arrays.toString(arr)); } } ***************************************************************************************** ***************************************************************************************** package
氣泡排序; import java.util.Arrays; /** * 氣泡排序 * @author zjn * */ public class BubbleSort { public static void BubbleSort(int[] arr) { int temp;//定義一個臨時變數 for(int i=0;i<arr.length-1;i++){//冒泡趟數 for(int j=0;j<arr.length-i-1;j++){ if(arr[j+1]<arr[j]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } public static void main(String[] args) { int arr[] = new int[]{1,6,2,2,5}; BubbleSort.BubbleSort(arr); System.out.println(Arrays.toString(arr)); } } **************************************************************************************** **************************************************************************************** 遞迴(recursion):程式呼叫自身的程式設計技巧。 遞迴滿足2個條件: 1)有反覆執行的過程(呼叫自身) 2)有跳出反覆執行過程的條件(遞迴出口) 遞迴案例:判定一系列字串中是否有相同的內容 public class T { public static void main(String[] args) { String[] a = {"a1","a2","a3","b3","c","b","33","33"}; boolean b = new T().fun(0, a); System.out.println(b); } public boolean fun(int n,String[] a){ boolean b = false; if(n == a.length){ b = true; }else{ for(int i = n; i < a.length-1; i++){ System.out.println(n+" "+(i+1)); if(a[n].equals(a[i+1])){ return false; } } n++; fun(n,a); } return b; } } ***************************************************************************************** ***************************************************************************************** 單例模式: public class SingletonPattern { /** * 使用靜態變數來儲存例項 */ private static SingletonPattern instance; /** * 私有化構造方法 作用:無法使用new關鍵字來建立SingletonPattern的例項。 */ private SingletonPattern() { } /** * 提供一個公用的getInstance()方法用來獲取instance例項 */ public static SingletonPattern getInstance() { if (instance == null) { synchronized (SingletonPattern.class) { if (instance == null) { instance = new SingletonPattern(); } } } return instance; } }

相關推薦

怎麼一個氣泡排序模式的使用

package 氣泡排序; import java.util.Arrays; /** * 氣泡排序改進版 * @author zjn * */ public class BubbleSort1 { public static void Bubbl

排序深拷貝

舉例 let arr = [23, 2, 14, 7, 30, 4]; 基本排序 氣泡排序 function bubleSort(arr) { for (let i = arr.length;

c 和 Python 實現歸併排序

C: #include <iostream>   using namespace std;   #define MAXSIZE 9 typedef struct {     int r[MAXSIZE+1];     int length; }SqList;

(D11)Python-函數語言程式設計閉包

函數語言程式設計 函數語言程式設計 函數語言程式設計是指用一系列函式解決問題 函式是一等公民 好處: - 用每個函式完成細小的功能,一系列函式組合可以解決大問題 - 函式僅接收輸入併產生輸出,不包含任何能影像輸出的內部狀態 函式的可重入性:

圖的深度優先遍歷(鄰接矩陣

參考部落格:圖的深度優先遍歷(遞迴、非遞迴;鄰接表,鄰接矩陣) 本篇預設連通圖,非連通情況會在鄰接表處補上   1.鄰接矩陣的遞迴解法 #include<stdio.h> #define MAX 100 typedef struct { int e[MAX][MA

圖的深度優先遍歷(鄰接表

參考部落格:圖的深度優先遍歷(遞迴、非遞迴;鄰接表,鄰接矩陣) 本程式碼有個問題:就是結點是對應儲存下標的,要解決這個問題,可以增加一個定位函式(LocateVec),不修改也可以使程式碼簡潔些 關於非連通圖的bug已修改,就是增加了dfsTraverse函式迴圈遍歷一遍結點:沒訪問過則再做一次dfs

IO流----File位元組流字元流

 要把資料持久化儲存,就需要把記憶體中的資料儲存到記憶體以外的其他持久化裝置(硬碟、光碟、U盤等)上。 當需要把記憶體中的資料儲存到持久化裝置上這個動作稱為輸出(寫)Output操作。 當把持久裝置上的資料讀取到記憶體中的這個動作稱為輸入(讀)Input操作。 因此把這種輸入和輸出動作稱為IO

回溯歸併演算法及使用場景

一、求子集a 1、題目 已知一組數(其中無重複元素),求這組數可以組成的所有子集; 結果中不可有重複的子集 例如: nums[] =[1,2,3] 結果為:【[], [1] , [1,2],

leetcode 101. Symmetric Tree(C語言二叉樹判對稱性)30

貼原題: 解析:   本題是給出一個二叉樹,讓判斷其是否左右對稱。   我的思路就是直接遞迴。新建一個遞迴函式,引數是其左右孩子節點,若兩個節點都存在且值相等則對稱,繼續比較其各自的左右孩子。

函式表示式作用域作用域鏈閉包閉包與變數

函式表示式 函式表示式是JavaScript中的一個既強大又容易令人困惑的特性。定義函式的方式有兩種:一種是函式宣告(沒錯,不同於C語言之類的),另一種就是函式表示式。 函式申明(這相當於C語言的函式定義)的語法是這樣的: function functionName(a

leetcode + 樹的直徑有點像樹的最大深度

點選開啟連結//樹的直徑, 就是在樹的最大深度上,加了個 res= max(res, left+right) class Solution { public: int maxDepth(Tree

快速冪(原理一般位運算演算法)

  因為一開始對位運算不是很明白,加上2進位制權值忽然一說像聽了一個新詞,第一次碰見放下了,第二次也,,第三次也,今天就好好把它給看明白。 概念:快速計算底數的n次冪。 例題:(想明白就自己拿出筆紙耐心看下去,自己寫出來的才有自信說看明白了)    求a的b次方;

用Java一個氣泡排序

氣泡排序幾乎是個程式設計師都寫得出來,但是面試的時候如何寫一個逼格高的氣泡排序卻不是每個人都能做到,下面提供一個參考程式碼: import java.util.Comparator; /**

C++學習筆記(三)--函式引數陣列函式指標和const,二維陣列函式函式指標

C++ Primer Plus學習筆記之三 每一塊寫了一個詳細闡釋的demo,具體使用方法以及注意事項在程式碼裡都有備註 第七章函式--C++的模組程式設計,總計分為以下幾塊-- 函式引數

NOIP2001數的計算(普及組T1)————數學

題解:本題可尋找規律,a(i)(偶數)=a(i-1)+a(i/2),a(i)(奇數)=a(i-1) 程式碼如下: #include<iostream> using namespace std; int a[100000]={0,1}; int m

卡特蘭數程式實現迴圈BST和出入棧順序的應用

 卡特蘭數是組合數學中的一種數列,它的來歷和重要性可以自行百度,我主要說它的特徵和程式設計實現。 前幾項是1, 1, 2, 5, 14, 42, 132……, 如果令h(0)=h(1)=1,那麼h(n)=h(0)*h(n-1)+h(1)*h(n-2) + .

scala 基礎十二 scala apply的使用工廠方法和模式的實現

定義 其他 返回 pack 新的 true 伴生對象 args null 1. apply 可以用來實現類似於靜態的初始化類的實例,請看下面實例 package smart.iot class applyclass { } class A {

元類__call__方法和模式

rom pan AR erro metaclass self acl clas HA 在python中一切皆對象的概念。 舉一個例子: class Chinese: country=“china” def __init__(self, name,age,s

day047函式之裝飾器(閉包的運用)面向物件之模式(設計模式

本節內容: 1、函式之裝飾器 2、面向物件之單例模式 一、函式之裝飾器(閉包的運用) 裝飾器本質上就是一個python函式,一個閉包函式的運用, 他可以讓其他函式在不需要做任何程式碼變動的前提下,增加額外的功能,裝飾器的返回值也是一個函式物件。 裝飾器的應用場景:比如插入日誌,效能測試,事務處理,快

一個函式輸入int型返回整數逆序後的字串。如:輸入123返回“321”。 要求必須用不能用全域性變數輸入必須是一個引數必須返回字串

看了一下這個文章http://www.codeceo.com/article/alibaba-interview-java.html 順手寫了下 應該符合題目意思吧~~ #include <cstdio> #include <iostream> #i