常考数据结构与算法:排序
生活随笔
收集整理的這篇文章主要介紹了
常考数据结构与算法:排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
給定一個數組,請你編寫一個函數,返回該數組排序后的形式。
?
示例1
輸入
[5,2,3,1,4]返回值
[1,2,3,4,5]示例2
輸入
[5,1,6,2,5]返回值
[1,2,5,5,6]?
快速排序是由冒泡排序改進而得到的,是一種分區交換排序方法。思想如下:
一趟快速排序采用從兩頭向中間掃描的方法,同時交換與基準記錄逆序的記錄。
public class MySortMe {public static void main(String[] args) {MySortMe mySortMe = new MySortMe();//int[] arr = {5,2,3,1,3};int[] arr = {1,4,7,2,5,3,9};mySortMe.MySort(arr);}/*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可* 將給定數組排序* @param arr int整型一維數組 待排序的數組* @return int整型一維數組*/public int[] MySort (int[] arr) {if(null == arr){return null;}quicksort(arr,0, arr.length-1);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();return arr;}// 使用快速排序private void quicksort(int[] arr, int start, int end){if(start >= end){return;}int base = arr[start];int i = start+1;int j = end;// 5,2,3,1,3// 3 2 3 1 5while(i<=j){while(i<=j && arr[i]<=base){i++;}while(j >= i && arr[j] > base){j--;}if(i < j){ swap(arr, i, j);}}swap(arr,start,j);quicksort(arr, start, j-1);quicksort(arr, j+1,end);}private void swap(int[] arr, int i, int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}
?
總結
以上是生活随笔為你收集整理的常考数据结构与算法:排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jvm:类加载器和类的加载过程
- 下一篇: 常考数据结构与算法:最小的k个数