直接贴代码

快排:

public class Test {
private static void sort(int[] nums){
if(nums == null || nums.length == 0){
return;
}
quickSort(nums, 0, nums.length-1);
} private static void quickSort(int[] nums, int start, int end) {
int low = start;
int high = end;
int temp = nums[start];
while(start<end){
while (start<end && nums[end]>=temp){
end--;
}
swap(nums, start, end);
while(start<end && nums[start]<=temp){
start++;
}
swap(nums, start, end);
}
if(start-1>low) {
quickSort(nums, low, start - 1);
}
if(high>start+1) {
quickSort(nums, start + 1, high);
}
} private static void swap(int[] nums, int i, int j){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
} public static void main(String [] args){
int[] nums = {49,22,34, 6,22,19,3,19};
sort(nums);
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+“ ”);
} }
}

冒泡:

private static void bubbleSort(int[] num){
for(int i = 0 ; i < num.length ; i ++) {
for(int j = 0 ; j < num.length - i - 1 ; j ++){
if(num[j]>num[j+1]){
swap(num, j , j+1);
}
}
}
}

改进冒泡:

public void bubbleSort(int arr[]) {
boolean didSwap;
for(int i = 0, len = arr.length; i < len - 1; i++) {
didSwap = false;
for(int j = 0; j < len - i - 1; j++) {
if(arr[j + 1] < arr[j]) {
swap(arr, j, j + 1);
didSwap = true;
}
}
if(didSwap == false)
return;
}
}

改进后的冒泡排序最佳情况下时间复杂度为O(n)

希尔排序:

    private static void shellSort(int[] nums){
for(int d = nums.length/2 ; d > 0 ; d = d / 2){
for(int i = d ; i < nums.length ; i ++){
for(int j = i; j>=d; j = j-d){
if (nums[j] < nums[j - d]) {
swap(nums, j - d, j);
}else{
break;
}
}
}
}
}

归并排序:

    private static void mergeSort(int[] nums, int low, int high){
if(low>=high){
return;
}
int mid = (low+high)/2;
mergeSort(nums, low, mid);
mergeSort(nums, mid + 1, high);
merge(nums,low, mid, high);
} private static void merge(int[] nums, int low, int mid, int high){
int[] temp = new int[high-low+1];
int i = low;
int j = mid+1;
int k = 0;
while(i<=mid&&j<=high){
if(nums[i]<nums[j]){
temp[k++] = nums[i++];
}else{
temp[k++] = nums[j++];
}
}
while(i<=mid){
temp[k++] = nums[i++];
}
while(j<=high){
temp[k++] = nums[j++];
}
for(int p = 0 ; p < temp.length ; p++){
nums[low+p] = temp[p];
}
}

最新文章

  1. struts2中错误There is no Action mapped for namespace [/] and action name [] associated with context path
  2. 使用Fiddler搭建手机调试环境(我做得项目是调试微信的公众号)
  3. mysql dba系统学习(6)二进制日志binlog之二
  4. Apache Tomcat相应插件版本
  5. 判断文件是否存在(exist)
  6. codevs2622数字序列( 连续子序列最大和O(n)算法)
  7. SetCapture ReleaseCapture
  8. 【解决方案】客户端请求数据较大时,nginx返回数据被截断
  9. Azure Automation (6) 执行Azure SQL Job
  10. Google Guava的5个鲜为人知的特性
  11. 重写override
  12. SQL强化练习(面试与学习必备)
  13. 我的SSH框架实例(附源码)
  14. 使用JWT的RSA256加密做为用户认证, 测试性能
  15. git clone 指定分支 拉代码
  16. [游记] HEOI2018酱油记
  17. PSQL_标准API和Interface基本的用法和比较(概念)
  18. 基于redis的分布式缓存disgear开源到github上了
  19. 测试php中的curl是否可使用
  20. 使用imp命令和exp命令对oracle数据库进行导入导出操作

热门文章

  1. Log4Net 调试时输出sql到 视图-&gt;输出的sql语句
  2. Mat类
  3. Entity Framework Tutorial Basics(27):Update Entity Graph
  4. Excel课程学习第三课排序与替换
  5. 形式化验证工具(PAT)2PC协议学习
  6. repo的一些用法
  7. .NET 生成生成缩略图
  8. java的一些最最最最基本的东西,纯粹是为了保存
  9. 容器编排之Kubernetes1.10.2安装与配置
  10. 洛谷 P3586 [POI2015]LOG