简单的排序算法以备查验

虽然,同时进行着数据库,C#实战项目,但始终明白,尽管当前这些应用类的可能会占据白天的大部分时间,但要想在软件这一块有长足的进展, 算法与数据结构始终是不可忽略的存在.这个过程是一个长期的过程,也是一个不可轻易放弃的过程,不放弃,就是不放弃自己的爱好,不放弃自己.坚持学习,总有一天,会达到自己的目标.

C、C++、C#、JAVA除去语法特性的东西,其实在算法这一块,应该是没有什么障碍的。偶有所得,记录下来,将来看看,也算是一种不忘初衷的体验吧!学习最重要的,还是要动手,只有亲自动手敲一下,才知道自己哪里是真正的不懂!

以下是用JAVA实现冒泡,插入,选择排序

/**
 * 〈一句话功能简述〉<br>
 * 〈选择排序〉
 *
 * @author Administrator
 * @create 2019/4/23
 * @since 1.0.0
 */
public class SelectSort {
    public static void SelectSort(int[] arr) {
        if (arr == null || arr.length < 2) return;
        for (int i = 0; i < arr.length - 1; i++) {//i的初值(数组的下标)代表排序好的下标
            int MinIndex = i;
            for (int j = i + 1; j < arr.length; j++) {//拿这个数组的下标去比较剩下的全数组下标,找出最小的下标
                MinIndex = arr[j] < arr[MinIndex] ? j : MinIndex;
            }
            swap(arr , i , MinIndex);
        }
    }
/**
 * 〈一句话功能简述〉<br>
 * 〈bubble〉冒泡排序
 *
 * @author Administrator
 * @create 2019/4/23
 * @since 1.0.0
 */

public class BubbleSort {//看下arr.length的值,是数组的长度,不代表下标

    public static void BubbleSort(int[] arr) {
        if (arr == null || arr.length < 2) return;
        for (int i = arr.length - 1; i > 0; i--) {//两两交换,所以第一次是比较次数最多的,顺序是不能颠倒的
            for (int e = 0; e < i; e++) {
                if (arr[e] > arr[e + 1]) swap(arr , e , e + 1);
            }
        }
    }
/**
 * 〈一句话功能简述〉<br>
 * 〈insertsort插入排序〉
 *
 * @author Administrator
 * @create 2019/4/23
 * @since 1.0.0
 */
public class InsertSort {
    public static void Insertsort(int[] arr) {
        if (arr == null || arr.length < 2) return;
        for (int i = 1; i < arr.length; i++)//先放一个数,再依次放入其他数,所以起始值为1
            for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {//始终比较j和j+1, 依次往前看
                swap(arr , j , j + 1);
            }
    }
--------------------------以下是测试的结构------------------------------------------
public class SelectSort {
    public static void SelectSort(int[] arr) {
        if (arr == null || arr.length < 2) return;
        for (int i = 0; i < arr.length - 1; i++) {//i的初值(数组的下标)代表排序好的下标
            int MinIndex = i;
            for (int j = i + 1; j < arr.length; j++) {//拿这个数组的下标去比较剩下的全数组下标,找出最小的下标
                MinIndex = arr[j] < arr[MinIndex] ? j : MinIndex;
            }
            swap(arr , i , MinIndex);
        }
    }

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

    public static int[] generaterRodomArray(int maxSize , int maxValue) {
        int[] arr = new int[(int) ((maxSize + 1) * Math.random())];//创建一个从0到maxSize+1
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int) ((maxValue + 1) * Math.random());
        }
        return arr;
    }

    public static void printArr(int[] arr) {
        if (arr == null) return;
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        int maxvalue = 100;
        int maxsize = 100;
        int[] arr = generaterRodomArray(maxsize , maxvalue);
        printArr(arr);
        SelectSort(arr);
        printArr(arr);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guangod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值