【Java】快速排序
2015-07-21 17:00
507 查看
快速排序是随机挑选一个元素,对数组进行分割,将所有比它小的元素排在前面,比它大的元素排在后面,这里分割经由一系列元素交换的动作完成。
快速排序的时间复杂度:
最好的情况下O(n(log2n)), 最坏的情况下O(n2)
空间复杂度 O(1)
public class quickSort {
void quicksort(int arr[], int left, int right) {
int index = partition(arr, left, right);
if (left < index - 1) {
quicksort(arr, left, index - 1);
}
if (index < right) {
quicksort(arr, index, right);
}
}
int partition(int arr[], int left, int right) {
int pivot = arr[(left + right) / 2];
while (left <= right) {
while(arr[left] < pivot) left++;
while(arr[right] > pivot) right--;
if (left <= right) {
swap(arr, left, right);
left++;
right--;
}
}
return left;
}
void swap(int arr[], int left, int right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
}
快速排序的时间复杂度:
最好的情况下O(n(log2n)), 最坏的情况下O(n2)
空间复杂度 O(1)
public class quickSort {
void quicksort(int arr[], int left, int right) {
int index = partition(arr, left, right);
if (left < index - 1) {
quicksort(arr, left, index - 1);
}
if (index < right) {
quicksort(arr, index, right);
}
}
int partition(int arr[], int left, int right) {
int pivot = arr[(left + right) / 2];
while (left <= right) {
while(arr[left] < pivot) left++;
while(arr[right] > pivot) right--;
if (left <= right) {
swap(arr, left, right);
left++;
right--;
}
}
return left;
}
void swap(int arr[], int left, int right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
}
相关文章推荐
- 【Spring十】使用OpenSessionInView解决懒加载问题及Spring管理下的session和事务
- java.net.URL的简单使用
- Java 增强型的for循环 for each
- java命令设计模式
- 文章标题
- Java中的super 和 this
- Spring MVC开发之一 开发环境的搭建
- Java的垃圾回收机制
- Java的垃圾回收机制
- 【Spring八】Spring与Hibernate整合
- 利用java类的反射机制,实现了 映射 获得post(get)的参数 的BaseServlet
- 使用jersey(2.5.1)搭建java REST服务
- java FileReader与FileWriter 代码笔记
- 【Spring七】JDBC编程之声明式事务处理
- Java实现的Windows资源管理器实例
- Java并发编程:并发容器之CopyOnWriteArrayList(转载)
- 【Spring六】JDBC编程之XML配置
- 【Spring五】AOP之使用注解配置
- 【Spring四】AOP之XML配置
- java创建日期