常見的排序演算法

2021-10-09 03:36:57 字數 2650 閱讀 5968

氣泡排序概述

氣泡排序**

氣泡排序**實現

/*

氣泡排序:

一種排序的方式,對要進行排序的資料中相鄰的資料進行兩兩比較,將較大的資料放在後面,

依次對所有的資料進行操作,直至所有資料按要求完成排序

*/public

class

test1

; system.out.

println

("排序前:"

+ arrays.

tostring

(arr));

// 氣泡排序

// 外層迴圈控制比較輪數

for(

int i =

0; i < arr.length -

1; i++)}

} system.out.

println

("排序後:"

+ arrays.

tostring

(arr));

}}

選擇排序概述

選擇排序**

選擇排序**實現

public

class

test

; system.out.

println

("排序前:"

+ arrays.

tostring

(arr));

// 選擇排序

// 外層迴圈控制比較的輪數

for(

int i =

0; i < arr.length -

1; i++)}

} system.out.

println

("********************====");

// 外層迴圈控制比較的輪數

for(

int i =

0; i < arr.length -

1; i++)}

// 如果最小值的索引不是選中的位置索引,就交換

if(minindex != i)

} system.out.

println

("排序後:"

+ arrays.

tostring

(arr));

}}

普通查詢和二分查詢

普通查詢

原理:遍歷陣列,獲取每乙個元素,然後判斷當前遍歷的元素是否和要查詢的元素相同,如果相同就返回該元素的索引。如果沒有找到,就返回乙個負數作為標識(一般是-1)

二分查詢

原理: 每一次都去獲取陣列的中間索引所對應的元素,然後和要查詢的元素進行比對,如果相同就返回索引;

如果不相同,就比較中間元素和要查詢的元素的值;

如果中間元素的值大於要查詢的元素,說明要查詢的元素在左側,那麼就從左側按照上述思想繼續查詢(忽略右側資料);

如果中間元素的值小於要查詢的元素,說明要查詢的元素在右側,那麼就從右側按照上述思想繼續查詢(忽略左側資料);

二分查詢對陣列是有要求的,陣列必須已經排好序

二分查詢**

假設有乙個給定有序陣列(10,14,21,38,45,47,53,81,87,99),要查詢50出現的索引

則查詢過程如下圖所示:

二分查詢**實現

public

static

void

main

(string[

] args)

;int index =

binaryserach

(arr,38)

; system.out.

println

(index);}

/** * 二分查詢方法

* @param arr 查詢的目標陣列

* @param number 查詢的目標值

* @return 找到的索引,如果沒有找到返回-1

*/public

static

intbinaryserach

(int

arr,

int number)

else

if(number < arr[mid]

)else

if(number > arr[mid])}

return-1

;//如果陣列中有這個元素,則返回

}

常見的排序演算法

一 氣泡排序 include include void swap int a,int b void bubblesort int arr,int size int main void bubblesort a,5 for int i 0 i 5 i cout 二 選擇排序 void selectio...

常見的排序演算法

需要包含的標頭檔案 include stdafx.h include include include 氣泡排序是穩定排序 時間複雜度 o n 2 void swap int a,int b void bubblesort int a,int n void printnum int a,int n a...

常見的排序演算法

排序演算法是最基礎,也是最簡單的演算法思想,因為應用場景多,書寫簡單,所以應用較為普遍,所以在面試和考試的時候,都會涉及到排序演算法,雖然排序演算法種類很多,但是只要理解了思想,然後靈活運用,那麼就不難記憶.排序演算法兩個需要記憶和理解的點就是 演算法思想和時間複雜度.下面我們就介紹和分析一下常見的...