排序(一) 交换排序:冒泡与快速排序
来源:互联网 发布:高明区司法拍卖淘宝网 编辑:程序博客网 时间:2024/06/09 20:46
冒泡与快排是以前学的知识,但是纸上得来终是浅,自己动手才丰衣足食,自己用代码来实现又是另一回事。
1. 冒泡排序:
冒泡排序的平均时间复杂度O(n^2),最坏的是的遇到顺序变逆序或者逆序变顺序。
空间复杂度O(1),即所需空间为常量,与n无关。
完整java代码:
import java.util.Scanner;public class BubbleSort {public static void main(String[] args) {BubbleSort bubble = new BubbleSort();char[] ch = bubble.getChar();bubble.bubbleSort(ch);System.out.println(ch);}public void bubbleSort(char[] c) {char temp;for (int i = 0, len = c.length - 1; i < len; i++) {for (int j = 0; j < len - i; j++) {if (c[j] > c[j + 1]) {temp = c[j + 1];c[j + 1] = c[j];c[j] = temp;}}}}public char[] getChar() {Scanner scan = new Scanner(System.in);String str = scan.nextLine();return str.toCharArray();}}
2. 快速排序:
快排平均时间复杂度O(nlogn),其实我也不是搞得很懂时间空间复杂度,不过,代码还是会写的。
完整java代码:
import java.util.Scanner;public class QuickSort {public static void main(String[] args) {QuickSort sort = new QuickSort();char[] list = sort.getChar();sort.sort(list, 0, list.length - 1);System.out.println(list);}private int quickSort(char[] arr, int low, int high) {int left = low;int right = high;//其实这两行也是没必要。char temp = arr[low];while (left < right) {while (left < right && temp <= arr[right])right--;arr[left] = arr[right];while (left < right && temp >= arr[left])left++;arr[right] = arr[left];}arr[left] = temp;return left;}private void sort(char[] arr, int low, int high) {int key;key = this.quickSort(arr, low, high);if (low < key - 1)sort(arr, low, key - 1);if (key + 1 < high) //这两个if语句不能分开写我觉得sort(arr, key + 1, high);}private char[] getChar() {Scanner scan = new Scanner(System.in);String str = scan.nextLine();return str.toCharArray();}}
PS:是用java写的,对学java的有点小用,还没怎么优化,大体思路就这样,亲测代码无误哟!
下期奉上插入排序的两种(直接和希尔),不过我搞不懂希尔排序.....(有什么错误和不足还请指出)
0 0
- (一)交换排序:冒泡排序,快速排序
- 排序(一) 交换排序:冒泡与快速排序
- 交换排序之冒泡排序与快速排序
- 交换排序----冒泡排序 和 快速排序
- 交换排序:冒泡排序和快速排序
- 交换排序(冒泡排序、快速排序)
- 交换排序(冒泡排序,快速排序)
- 交换排序:冒泡排序,快速排序
- 交换排序--冒泡排序和快速排序
- 交换排序(冒泡排序,快速排序)
- 交换排序(冒泡排序、快速排序)
- 交换排序--冒泡排序和快速排序
- 交换排序之--冒泡排序,快速排序
- 交换排序(快速排序 冒泡排序)
- 交换排序(冒泡排序&&快速排序)
- 交换排序(冒泡排序,快速排序)
- 交换排序(冒泡排序--快速排序)
- 交换排序与冒泡排序
- 热部署
- NFC与RFID区别
- android环境的搭建
- nodejs中mysql用法
- makefile
- 排序(一) 交换排序:冒泡与快速排序
- Linux shell ————了解
- [阅读有感]不要违背类设计的两大原则,小记
- 关于preg_replace是否已经弃用?
- ant1.9.4之编译、打包、发布、清理
- 黑马程序员——异常机制1:概述
- BestCoder Round #16 1001 Revenge of Segment Tree 1002 Revenge of LIS II
- WINDOWS自定义消息范围
- 红黑树的插入(算法导论)