陣列的排序演算法有哪些?如何實現?

2021-09-07 10:34:07 字數 1261 閱讀 5593

□ 選擇排序法

選擇排序法的基本思路是:將要排序的陣列分成兩部分,一部分是從小到大已經排好序的,一部分是無序的,從無序的部分取出最小的數值,放到已經排好序的部分的最後。選擇排序法的實現**如下:

//選擇排序法

public int xuanze(int arr)

}//交換m和i兩個元素的位置

if(i!= m)

}return arr;

}□ 氣泡排序法

氣泡排序法的基本思路是:從陣列開始掃瞄待排序的元素,在掃瞄過程中依次對相鄰元素進行比較,將數值大的元素後移。每經過一趟排序後,數值最大的元素將移到末尾,此時記下該元素的位置,下一趟排序只需要比較到此位置為止,直到所有元素都已有序排列。氣泡排序法的實現**如下:

//氣泡排序法

public int maopao(int arr)}}

return arr;

}□ 插入排序法

插入排序法的基本思路是:將要排序的陣列分成兩部分,每次從後面的陣列部分中取出索引最小的陣列元素,插入到前面陣列部分的適當位置中。通常在開始排序時,將陣列的第乙個元素作為一組,後面的所有元素被當成另一組。插入排序法的實現**如下:

//插入排序

public static int charu(int arr)

}//將插入元素插入到合適位置

arr[j+1] = tmp;

}return arr;

}□ 快速排序法

快速排序法是當今被認為最好的排序演算法之一,它的基本思路是:將乙個大的陣列的排序問題,分解成2個小的陣列的排序,而每個小的陣列的排序又可以繼續分解成更小的2個陣列,這樣一直遞迴分解下去,直到陣列的大小最大為2。快速排序法的實現**如下:

//快速排序法

public static int kuaisu(int arr)

//遞迴分組排序

public static int quicksort(int arr,int left,int right)else

}arr[left] = arr[j];

arr[j] = s;

//對左邊進行遞迴

quicksort(arr,left,j-1);

//對右邊進行遞迴

quicksort(arr,j+1,right);

}return arr;

}注意:arrays類中提供了sort()方法並進行了多次過載,可以實現各種型別陣列的排序功能。該方法採取的排序演算法是乙個經過調優的快速排序法,使用示例「arrays.sort(a)」,a 是乙個陣列變數。

陣列排序有哪些方式

var arr a b a b arr.sort console.log arr a b a b 因為字母a b的ascii值分別為65 66,而a b的值分別為97 98,所以上面輸出的結果是 a b a b 比較函式接收兩個引數,如果第乙個引數應該位於第二個之前則返回乙個負數,如果兩個引數相等則...

不穩定排序演算法有哪些

口訣 一堆 堆 希爾 希爾 快 快速 選 選擇 我們知道堆的結構是節點i的孩子為 2 i 和 2 i 1 節點,大頂堆要求父節點大於等於其 2 個子節點,小頂堆要求父節點小於等於其 2 個子節點。在乙個長為 n 的序列,堆排序的過程是從第 n 2 開始和其子節點共 3 個值選擇最大 大頂堆 或者最小...

陣列的常用方法有哪些?

1 字串轉字串陣列 split 方法 字面意思split 分開,故split方法是把字串分割成字串陣列,也就是把字串的分割成乙個個的單個字串元素 例如 var str script console.log str.split s c r i p t 注 split 括號裡的雙引號一定要加 2 分隔符...