日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学java要算法吗_学习java不可不知的几种算法

發布時間:2024/9/27 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学java要算法吗_学习java不可不知的几种算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、冒泡排序算法:編程語言算法中比較經典的算法。每個程序員都必須了解和會運用的。

AAA軟件教育

程序算法基礎

通過多次比較(相鄰兩個數)和交換來實現排序:

public class bubble {

public static void bubbleSort(int[] a) {

int temp;

for (int i = 1; i < a.length; i++) {

//將相鄰兩個數進行比較,較大的數往后冒泡

for (int j = 0; j < a.length - i; j++) {

if (a[j] > a[j + 1]) {

//交換相鄰兩個數

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

}

}

public static void main(String[] args) {

int[] mao= {213,123,342,543,12,67,98,320,421,4,15,54,27,34,17};

System.out.print("排序前的數組為:\n"); //輸出排序前的數組

for(int i=0;i

{

System.out.print(mao[i]+" ");

}

System.out.print("\n");

bubbleSort(mao); //排序操作

System.out.print("排序后的數組為:\n");

for(int i=0;i

{

System.out.print(mao[i]+" "); //輸出排序后的數組

}

System.out.print("\n");

}

}

2、直接插入排序

通過對未排序的數據執行逐個插入至合適的位置而完成排序

public class straight{

public static void straightInsertion(int[] arr) {

int current;//要插入的數

//從1開始第一次一個數不需要排序

for (int i = 1; i < arr.length; i++) {

current = arr[i];

int j = i - 1; //序列元素個數

//從后往前循環,將大于當前插入數的向后移動

while (j >= 0 && arr[j] > current) {

arr[j + 1] = arr[j]; //元素向后移動

j--;

}

arr[j + 1] = current; //找到位置,插入當前元素

}

}

}

3、快速選擇排序

通過多次比較和交換來實現排序。首先設定一個分界值,將所有數值與分界值比較,左小右大,比較和交換數據值進而完成排序

public class quick{

static void quickSort(int[] arr,int left,int right) {

int f,t,rtemp,ltemp;

ltemp=left;

rtemp=right;

f=arr[(left+right)/2]; //分界值

while(ltemp

{

while(arr[ltemp]

{

++ltemp;

}

while(arr[rtemp]>f)

{

--rtemp;

}

if(ltemp<=rtemp)

{

t=arr[ltemp];

arr[ltemp]=arr[rtemp];

arr[rtemp]=t;

rtemp--;

ltemp++;

}

}

if(left

{

quickSort(arr,left,ltemp-1); //遞歸調用

}

if(ltemp

{

quickSort(arr,rtemp+1,right); //遞歸調用

}

}

}

4、希爾排序,又稱Shell排序或縮小增量排序

(1)將有n個元素的數組分成n/2個數字序列,第1個數據和第n/2+1個數據為一對。

(2)一次循環使每一個序列對排好順序。

(3)然后,再變為n/4個序列,再次排序。

(4)不斷重復上述過程,隨著序列減少最后變為一個,也就完成了整個排序。

代碼如下:public class shell{

static void shellSort(int[] a){

int h,temp,x=0;

for(int r=a.length/2;r>=1;r/= 2) //劃組排序

{

for(int i=r;i

{

temp=a[i];

int j=i-r;

while(j>=0 && temp

{

a[j+r]=a[j];

j-=r;

}

a[j+r]=temp;

}

x++;

}

}

}

5、堆排序:構造堆結構、堆排序輸出來實現排序

public class pratice {

public static void heapSort(int a[],int n)

{

int i,j,h,k;

int t;

for(i=n/2-1;i>=0;i--) //將a[0,n-1]建成大根堆

{

while(2*i+1

{

j=2*i+1 ;

if((j+1)

{

if(a[j]

總結

以上是生活随笔為你收集整理的学java要算法吗_学习java不可不知的几种算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。