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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

常见的排序方法

發布時間:2024/8/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见的排序方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//交換數組中的兩個數

??? public static void Swap(int i,int j,int arr[])

??? {

?????? if(i>=0&&i<=arr.length-1&&j>=0&&j<=arr.length-1)//確保兩個數存在

?????? {

?????????? int temp=arr[i];

?????????? arr[i]=arr[j];

?????????? arr[j]=temp;

?????? }

??? }

??? //冒泡排序法

??? public static void MaoPaoSort(int arr[])

??? { ????

?????? //冒泡排序,外層循環決定走幾趟,n個數需要n-1趟10個數,則需9趟,1個數,則需0趟

?????? int temp;

?????? for(int i=0;i<arr.length-1;i++)

?????? {

?????????? for(int j=0;j<arr.length-1-i;j++)

?????????? {

????????????? if(arr[j]>arr[j+1])//交換位置,小的在前面

????????????? {

????????????????? temp=arr[j];

????????????????? arr[j]=arr[j+1];

????????????????? arr[j+1]=temp;

????????????? }

?????????? }

?????? }?????????

??? }

??? //選擇排序法

??? public static void SeclectSort(int arr[])

??? {

?????? int min=0;

?????? int flag=0;

?????? for(int i=0;i<arr.length-1;i++)

?????? {

?????????? min=arr[i];//假設第i個數暫時為最小的

?????????? flag=i;//記錄位置

?????????? //尋找在第i個后面的數中比它小的數字

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

?????????? {

????????????? if(min>arr[j])

????????????? {

????????????????? min=arr[j];

????????????????? flag=j;?????????????????

????????????? }

?????????? }

?????????? //接下來交換第i個和和其后面最小的數字,使得數組中第i個數是最小的

?????????? min=arr[i];

?????????? arr[i]=arr[flag];

?????????? arr[flag]=min;?????????????

?????? }

??? }

??????

??? //插入排序法

??? public static void InsertSort(int arr[])

??? {

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

?????? {

?????????? int insertVal=arr[i];//要插入的數

?????????? int index=i-1;//index記錄要插入的位置

?????????? //尋找插入的位置

?????????? while(index>=0&&insertVal<arr[index])//

?????????? {

????????????? arr[index+1]=arr[index];

????????????? index--;

?????????? }

?????????? arr[index+1]=insertVal;

?????? }

??? }

??? //快速排序法

??? public static void QuickSort(int left,int right,int arr[])

??? {

?????? if(left<right)

?????? {

?????????? int i=left-1;

?????????? int j=right+1;

?????????? int mid=arr[(left+right)/2];

?????????? while(true)

?????????? {

????????????? while(arr[++i]<mid);

????????????? while(arr[--j]>mid);

????????????? if(i>=j)

????????????? {break;}

????????????? Swap(i,j,arr);?????????????????

?????????? }

?????????? QuickSort(left,--i,arr);

?????????? QuickSort(++j,right,arr);

?????? }

??? }

??? //二分查找

??? public static int TwoFind(int leftIndex,int rightIndex,int tarVal,int arr[])

??? {

?????? if(leftIndex>=0&&leftIndex<arr.length&&rightIndex>=0

????????????? &&rightIndex<arr.length&&leftIndex<=rightIndex)

?????? {

?????????? int midIndex=(leftIndex+rightIndex);

?????????? int mid=arr[midIndex];

?????????? if(mid>tarVal)

?????????? return TwoFind(leftIndex,midIndex-1,tarVal,arr);

?????????? else if(mid<tarVal)

?????????? return TwoFind(midIndex+1,rightIndex,tarVal,arr);

?????????? else

????????????? return midIndex;

?????? }

?????? else

?????????? return -1;

??? }

轉載于:https://www.cnblogs.com/hao02171990/p/3264087.html

總結

以上是生活随笔為你收集整理的常见的排序方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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