算法篇之排序算法

 什么是算法

        在我认为,算法是一种快速计算的一种公式,在面对不同的问题时侯,灵活应用不同的算法可以使得问题更容易解决。在我们初学者学习算法时,要将已有的、常用的算法熟悉并掌握,能应用与其他的问题中。学到后期,我们甚至可以自己编写出一个更快、更稳定的算法。

排序算法

1)插入排序

        插入排序是指,在一个数组中,从【第二个元素】开始,依次向前面的【元素】一一比较,若【第二个元素】比前面的【元素】大,则将该【元素】往后移,【第二个元素】插入该【元素】的前面,然后指针向后移一位,循环操作,直到最后一个【元素】为止。

2)归并排序

在将几个已排好序的数组,合并成一个数组并排好序这个问题中,归并算法的效率是很高的。

        例如,将【8个元素的】数组分成2个【4个元素的】数组,然后再分成4个【2个元素的】数组,然后在各自的数组里有序排列,然后2个【2个元素的】数组合并成1个【4个元素的】数组进行排序,最后将2个【4个元素的】数组合并成1个【8个元素的】数组并排序。

注意:数组中排序的方法不限。

 3)冒泡排序

for(int i = 0; i < array.length - 1;i++){

        for(int j = 0;j < array.length - 1 - i;j++){

                if(array[j] > array[j+1]){

                        int temp = array[j];   //中间值存储数据

                        array[j] = array[j+1];  

                        array[j+1] = temp;   //中间值赋值

                }

        }

}

        首先将【第一个元素】与【第二个元素】进行比较,若前者大于后者,则进行交换。接着,从【第二个元素】与【第三个元素】比较,同上。直到最大的元素移到最后。 然后第二次循环,重复操作将【第二大的元素】排到【倒数第二】。重复操作即可排好数组。 

4)选择排序

 for (int i = 0; i < arr.length - 1; i++) {
        int minIndex = i;
        int min = arr[0];
        for (int j = i + 1; j < arr.length; j++) {
            if (min > arr[j]) {
                min = arr[j]; // 重新给min赋值
                minIndex = j; // 重置minIndex的值
            }
        }
        if (minIndex != i) {
            arr[minIndex] = arr[i];
            arr[i] = min;
        }
    }

         首先,将【第一个元素】与【第二个元素】比较,若前者大于后者则交换位置,循环后【第一个元素】是最小的元素,然后从【第二个元素】开始到【最后一个元素】中选出【最小的元素】。依次循环后就得到了【升序】的数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值