for循环以及有关十大排序算法的理解

        开学这些日子我利用空闲时间初步了解了十大算法及for循环,并没有深入探索,我之前学过python,对编程有一定的基础,下面我将和大家分享一下我这段时间学习的十大算法中的一些理解,以及我用for循环求出100以内的奇数和偶数和的思路。

       从博客上了解到,这十大排序算法分别为:插入排序,希尔排序,选择排序,冒泡排序,归并排序,快速排序 ,堆排序,基数排序,桶排序,以及计数排序。

        这十大排序算法适用于多种编程语言,比如冒泡排序:

        这是我在python上实现的冒泡排序:

def bubbleSort(arr):
    for i in range(1, len(arr)):
        for j in range(0, len(arr)-i):
            if arr[j] > arr[j+1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr

相邻的元素,如果第一个比第二个大,就交换他们两个(最后一个除外),重复步骤,比较完成之后也就排序好了。

        这是我在博客上了解到的Java实现冒泡排序:public class BubbleSort implements IArraySort {

    @Override
    public int[] sort(int[] sourceArray) throws Exception {
        // 对 arr 进行拷贝,不改变参数内容
        int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);

        for (int i = 1; i < arr.length; i++) {
            // 设定一个标记,若为true,则表示此次循环没有进行交换,也就是待排序列已经有序,排序已经完成。
            boolean flag = true;

            for (int j = 0; j < arr.length - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;

                    flag = false;
                }
            }

            if (flag) {
                break;
            }
        }
        return arr;
    }
}

相对于python,看起来是复杂了许多,其实运算步骤也是一样的,作为一个Java小白的我暂时也不太理解。以后我将话时间精力去深入探索一下。

接下来我将说的是关于稳定性,稳定的算法有冒泡排序,插入排序,归并排序,和基数排。

不稳定排序算法:选择排序,快速排序,希尔排序,堆排序。

稳定性:排序后两个相同值的顺序和排序之前的顺序相同

不稳定性:比如选择排序,选择排序即是给每个位置选择待排序元素中当前最小的元素。比如给第一个位置选择最小的,在剩余元素里面给第二个位置选择次小的,在一趟选择时,如果当前锁定元素比后面一个元素大,而后面较小的那个元素又出现在一个与当前锁定元素相等的元素后面,那么交换后位置顺序显然改变了。

稳定性的话是比较好懂的,不稳定性我个人觉得有点复杂,目前还没完全理解(目前理解为排序的时候会导致排序是出现错误,或者运行后排序不能终止)。

目前的话就了解到这里,以后掌握更多之后会继续和大家分享。

最后向大家展示一下最近学的for循环:

class fr {
    public static void main (String[] args){
        //计算0-100之间的奇数和,偶数和
        int o = 0;
        int j = 0;
        for(int i = 0; i <=100; i++ ){
            if(i%2==0)
            {
                o=o+i;
            }
            else{
                j=j+i;
            }
        }        
    }
}

这是用for循环计算0-100之间的奇数和与偶数和,希望以后能和大家一起学习一起进步。今天的分享就先到这里了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值