博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线性数据结构算法
阅读量:4039 次
发布时间:2019-05-24

本文共 1880 字,大约阅读时间需要 6 分钟。

     结构是存储、组织的方式。数据结构是指相互之间存在一种或多种特定关系的的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储。数据结构往往同高效的检索和技术有关。

        图形结构                                                       树形结构                                           线性结构                                集合结构

 

1.冒泡排序

在进行冒泡法排序(升序)时,将第一个数与后继的数进行比较,如果顺序则继续第二个数与后继的数进行比较;如果逆序则交换位置,继续和后继的数进行比较,完成第一趟冒泡排序。同理,直到数组有序。

如果经过一趟冒泡排序不发生数据交换说明数组原本有序。

最好时间复杂度:O(n)

平均时间复杂度:O(n^2)

最坏时间复杂度: O(n^2)

空间复杂度: O(1)

代码示例

/**     * 冒泡排序     *     * @param array     * @return 相邻数据对比,交互位置     */    public static int[] bubblingSort(int[] array) {        //从后一位开始循环对比,直到循环完。        for (int i = array.length - 1; i > 0; i--) {            boolean flag = true;            //把最大的筛选到最后            for (int j = 0; j < array.length - 1; j++) {                if (array[j] > array[j + 1]) {                    int temp = array[j];                    array[j] = array[j + 1];                    array[j + 1] = temp;                    flag = false;                }            }            //优化减少循环的次数            if (flag) {                break;            }        }        return array;    }     public static void main(String[] args) {            int[] array = new int[]{3, 2, 5, 8, 1, 9, 4, 6, 7};            bubblingSort(array);            for (int i : array) {                System.out.print(i + " ");            }        }

排序结果:

第1次排序:[2,3,5,1,8,4,6,7,9]

第2次排序:[2,3,1,5,4,6,7,8,9]
第3次排序:[2,1,3,4,5,6,7,8,9]
第4次排序:[1,2,3,4,5,6,7,8,9]
第5次排序:[1,2,3,4,5,6,7,8,9]
1 2 3 4 5 6 7 8 9 

 

2、 选择排序:把第一个数与他后面的数进行比较,如果顺序则继续与后面比较,如果逆序则两数交换位置,继续将第一个数与交换位置后的数进行比较,这样就完成了第一轮排序。同理将第二位与其后的数比较,直到数组有序为止。

最好时间复杂度:O(n)

平均时间复杂度:O(n^2)

最坏时间复杂度: O(n^2)

空间复杂度:O(1)

代码示例

/***     * 选择排序     * @param array     * @return     *     */    public static int[] selectSort(int[] array) {        for (int i = 0; i 

排序结果:

第0次排序:[1,2,5,8,3,9,4,6,7]

第1次排序:[1,2,5,8,3,9,4,6,7]
第2次排序:[1,2,3,8,5,9,4,6,7]
第3次排序:[1,2,3,4,5,9,8,6,7]
第4次排序:[1,2,3,4,5,9,8,6,7]
第5次排序:[1,2,3,4,5,6,8,9,7]
第6次排序:[1,2,3,4,5,6,7,9,8]
第7次排序:[1,2,3,4,5,6,7,8,9]
1 2 3 4 5 6 7 8 9 

转载地址:http://hkjdi.baihongyu.com/

你可能感兴趣的文章
2020年终总结
查看>>
linux内核学习(4)建立正式内核的页式内存映射, 以x86 32位模式为例
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
【剑指offer】q50:树中结点的最近祖先
查看>>
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Word Break(python)
查看>>
【剑指offer】面试题26:复杂链表的复制
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Clone Graph(python)
查看>>