1.冒泡排序:
- //冒泡排序:相邻的两个元素进行比较,如果符合条件换位。
- public static void sort_2(){
- int[] arr = {2,5,8,7,4,3};
- for(int i = 0; i < arr.length-1; i++)
- {
- for(int j = 0; j < arr.length-i-1;j++)
- {
- if(arr[j] > arr[j+1])
- {
- int temp = arr[j];
- arr[j] = arr[j+1];
- arr[j+1] = temp;
- }
- }
- }
- System.out.println(Arrays.toString(arr));
- }
复制代码 冒泡排序是相邻的两个元素比较,这样一轮下来,就可以把最大的确定下来在最后一个位置,然后依次循环。
2.选择排序:
- //选择排序,选定一个值和其余的比较,再选择一个值和其余的比较。
- public static void sort_1(){
- int[] arr = {2,5,8,7,4,3};
- for(int i = 0;i < arr.length-1;i++){
- for(int j = i+1;j < arr.length;j++){
- if(arr[i] > arr[j]){
- int temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- }
- }
- }
- System.out.println(Arrays.toString(arr));
- }
复制代码 一轮下来可以把第一个位置的元素确立下来。也就是上面代码的最小值。循环依次确立下标位置的值。
3.快速排序;
- public static void quick_sort(int[] arr,int l,int r)
- {
- if(l < r)
- {
- int i = l,j = r,x = arr[l];
- while(i < j)
-
- {
- while(i < j && arr[j] >= x)
- j--;
- if(i < j)
- {
- arr[i++] = arr[j];
- }
- while(i < j && arr[i] < x)
- i++;
- if(i < j)
- {
- arr[j--] = arr[i];
- }
- }
- arr[i] = x;
- quick_sort(arr,l,i-1);
- quick_sort(arr,i+1,r);
- }
- }
复制代码 快速排序是冒泡的升级版本,他可以提高效率的原因在于减少排序次数,不用每个元素之间都来比较,采用分治的思想,楼主个人比较好记的认为是:先选取一个基数,一般选择第一个数为基数,然后确立这个基数的下标位置。步骤如下:
在下标左右各定两个指针来移动,首先我们拿了第一个数,然后第一个数的坐标0就留下了一个坑,然后我们来选取右边指针比这个基数小的数来填第一个坑;在第一个坑填好后,右边又留下了一个坑,然后我们再在左边选择比基数小的填右边的坑。依次这样进行,我们到左右指针相遇时,在留下的坑上补上我们的这个基数,完成一轮的排序;此时基数左边元素比基数小,右边元素比基数大,然后把左右两边来重复选基数填坑操作。
|