ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

数组排序算法

2021-03-10 11:30:54  阅读:156  来源: 互联网

标签:arr cup int 算法 29 length 数组 68 排序


1.冒泡排序:

通过每次冒泡排序操作相邻两元素进行比较
找出最大或最小。如果满足条件,两元素间位置进行交换
每一次的冒泡都会找出一个元素达到指定位置

// 空杯子
int cup;
// 0,   {33, 52, 68, 16, 92, 73, 29}
比较n-1次
//第1次:[33, 52, 16, 68, 73, 29, 92] i = 0
//第2次:[33, 16, 52, 68, 29, 73, 92] i = 1
//第3次:[16, 33, 52, 29, 68, 73, 92] i = 2
//第4次:[16, 33, 29, 52, 68, 73, 92] i = 3
//第5次:[16, 29, 33, 52, 68, 73, 92] i = 4
//第6次:[16, 29, 33, 52, 68, 73, 92] i = 5
for (int i = 0; i < arr.length - 1; i++) {
    // 通过冒泡 每一次找出一个最值
    for (int j = 0; j < arr.length - 1 - i; j++) {
        if(arr[j]>arr[j+1]){
            // 位置互换
            cup = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = cup;
        }
    }
    System.out.println("第"+(i+1)+"次:"+Arrays.toString(arr));
}

时间复杂度是n的平方

2.选择排序:

在数组中选择性的找出最值,放置到数组的指定位置
然后再在未操作的元素中重复以上操作
// 找最值 最大值
// 定义一个杯子
int cup;
for (int i = 1; i < arr.length; i++) {
    // 存储最值下标
    int max = arr.length - i;
    // 通过该循环找出最值
    for (int j = 0; j < arr.length - i; j++) {
        if(arr[max]<arr[j]){
            // 改变 杯子中存储的下标
            max = j;
        }
    }
    // 进行元素的位置互换 arr[max] arr[arr.length-i]
    cup = arr[max];
    arr[max] = arr[arr.length-i];
    arr[arr.length-i] = cup;
    System.out.println("第"+i+"次:"+ Arrays.toString(arr));
}

时间复杂度是n的平方

3.插入排序:

把数组切割成两部分,一部分为有序的,一部分为无序
每一次都从无序部分获取一个元素,插入至有序部分
使有序部分每一次都成为一个新的有序数组
{33, 52, 68, 16, 92, 73, 29}
// 空杯子
   int cup;
    for (int i = 1; i < arr.length; i++) {
        for (int j = i; j > 0; j--) {
            if(arr[j]<arr[j-1]){
                cup = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = cup;
            }
        }
    }

时间复杂度是n的平方

4.反转排序:

把数组中的元素顺序反转  {1,2,3,4,5}==>{5,4,3,2,1}
int cup;
for (int i = 0; i < arr.length/2; i++) {
    //位置互换
    // arr[i] <==> arr[arr.length-i-1]
    cup = arr[i];
    arr[i] = arr[arr.length-i-1];
    arr[arr.length-i-1] = cup;
}

5.快速排序:

// 通过别人帮我写好的直接使用
//Arrays.sort(arr);
// 可以指定位置排序 [fromIndex,toIndex)
Arrays.sort(arr,1,4);
System.out.println(Arrays.toString(arr));

标签:arr,cup,int,算法,29,length,数组,68,排序
来源: https://blog.csdn.net/qq_42674061/article/details/114630849

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有