public class SortDemo { public static void main(String[] args){ int arr[] = {3,5,7,2,8,1,9,6,4}; System.out.print("排序前:");printfArray(arr); selectSort(arr); System.out.print("快速排序后:");printfArray(arr); //原始数组:57,68,59,52, //一轮之后:52,68,59,57, //二轮之后:52,57,68,59, //末轮之后:52,57,59,68, int arr2[] = {3,5,7,2,8,1,9,6,4}; System.out.print("排序前:");printfArray(arr2); bubbleSort(arr2); System.out.print("冒泡排序后");printfArray(arr2); } //快速排序(升序)从左往右取出一个数,这个数依次和其他数比较,大于则交换,即得到最小的数,10轮结束也就得到升序结果 public static void selectSort(int[] arr){ //具体写法百度可查,都有些许差异 for(int x=0;x<arr.length-1;x++){ for(int y=x+1;y<arr.length;y++){ if(arr[x]>arr[y]){ int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } } //冒泡排序(升序)比较第1丶2个数,1大于2则交换,继续比较2丶3个数,直至首轮结束,得到最大数,进行10轮得到升序结果 public static void bubbleSort(int[] arr){ for(int x=0;x<arr.length-1;x++){ for(int y=0;y<arr.length-1-x;y++){ if(arr[y]>arr[y+1]){ int temp = arr[y+1]; arr[y+1] = arr[y]; arr[y] = temp; } } } } //输出方法 public static void printfArray(int[] arr){ System.out.print("["); for(int i=0;i<arr.length;i++){ if(i!=arr.length-1){ System.out.print(arr[i]+","); }else{ System.out.println(arr[i]+"]"); } } } } ps:快速排序和冒泡排序差不多,只是冒泡排序在发现比它小的时候就交换,而选择排序是只有在确定了最小的数据之后,才会发生交换。 控制台:排序前:[3,5,7,2,8,1,9,6,4] 选择排序后:[1,2,3,4,5,6,7,8,9] 排序前:[3,5,7,2,8,1,9,6,4] 冒泡排序后[1,2,3,4,5,6,7,8,9]
以下为冒泡排序示意图: