本文共 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/