八大排序(尚未完善)

基本的流程就不写了,不会就自己看代码,按照代码跑6、7遍就懂了

java的数组值交换

异或交换运算(需要保证位置不同):

public static void swap(int[] arr, int i, int j){
        arr[i] = arr[i] ^ arr[j];
        arr[j] = arr[i] ^ arr[j];
        arr[i] = arr[i] ^ arr[j];      
}

1. 冒泡排序

时间复杂度O(N^2),额外空间复杂度O(1)

public static void bubbleSort(int[] arr){
        if(arr == null || arr.length < 2)
            return;
        for(int e = arr.length - 1; e > 0; e--)
           for(int i = 0; i < e; i++){
                if(arr[i] > arr[i + 1])
                   swap(arr, i, i + 1);
            }
        }
    }

2. 插入排序

时间复杂度O(N^2),额外空间复杂度O(1)

public static void insertionSort(int[] arr){
        if(arr == null || arr.length < 2)
            return;
        for(int i = 1; i < arr.length; i ++){
            for(int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--){
                swap(arr, j, j + 1);
            }
        }
    }

3. 选择排序

// 选择排序
	public static void selectSort(int[] arr){
		if(arr == null || arr.length < 2)
			return;
		for(int i = 0; i < arr.length; i ++){
			int minIndex = i;
			for(int j = i; j < arr.length; j ++){
				minIndex = arr[minIndex] < arr[j]? minIndex : j;
			}
			if(i == minIndex)
				continue;
			swap(arr, i, minIndex);
		}
		return;
	}

4. 基数排序

完善中

5. 希尔排序

// 希尔排序
    public static void shellSort2(int[] arr, int gap){
		for(int i = gap; i < arr.length; i ++){
			for(int j =i - gap;j >= 0; j -= gap){
				if(arr[j] > arr[j + gap])
					swap(arr, j, j + gap);
			}
		}
		return;
	}
	// 部分
	public static void shellSort(int[] arr){
		if(arr == null || arr.length < 2){
			return;
		}
		int[] gap = new int[arr.length / 2 + 1];
		int num = 0;
		int len = arr.length;
		while(len > 1){
			gap[num++] = len / 2;
			len /= 2;
		}
		System.out.println(Arrays.toString(gap));
		System.out.println(num);
		for(int i =0; i < num; i++)
			shellSort2(arr, gap[i]);
	}

6. 快速排序(待写)

7. 归并排序(待写)

8. 堆排序(待写)

相关推荐

  1. 排序尚未完善

    2024-04-01 02:46:02       39 阅读
  2. 排序算法【上】

    2024-04-01 02:46:02       56 阅读
  3. python 排序算法

    2024-04-01 02:46:02       39 阅读
  4. 排序算法之快速排序

    2024-04-01 02:46:02       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 02:46:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 02:46:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 02:46:02       82 阅读
  4. Python语言-面向对象

    2024-04-01 02:46:02       91 阅读

热门阅读

  1. 吴恩达:AI 智能体工作流引领人工智能新趋势

    2024-04-01 02:46:02       40 阅读
  2. 全面对比API和SDK

    2024-04-01 02:46:02       32 阅读
  3. 【开发总结】Rust的命令行库clap

    2024-04-01 02:46:02       46 阅读
  4. 练气第四天

    2024-04-01 02:46:02       40 阅读
  5. Python提取文本文档符合条件的某列

    2024-04-01 02:46:02       34 阅读
  6. 分布式算法 - ZAB算法

    2024-04-01 02:46:02       37 阅读
  7. 深度优先搜索(DFS)算法深入探索与实践

    2024-04-01 02:46:02       35 阅读
  8. [内部类与常见API]String类

    2024-04-01 02:46:02       38 阅读
  9. 如何让div中滚动条一直保持在最下方

    2024-04-01 02:46:02       35 阅读
  10. 烂笔头,记录一年遗忘

    2024-04-01 02:46:02       40 阅读
  11. 【python】《流畅的python》读书笔记之第1-2章

    2024-04-01 02:46:02       44 阅读