java——快排、冒泡、希尔、归并
直接贴代码
快排:
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];
}
}
java——快排、冒泡、希尔、归并的更多相关文章
- Java 快排
基于分治法的快排,用递归实现. 首先讲一下实现的过程. 1.在数组中取一个数作为基准,所谓的基准就是用来对比的数. 2.然后在数组中从后往前找,找到一个逆序数为止,找到之后就把它的值赋值到基准数的位, ...
- Java 快排 排序
一.快排的一种 ==================== public class myMain { public static void main(String[] args) { int t[] ...
- java快排(两种方法)
快排是最基础的排序算法之一,今天来回顾一下. public class QuickSort { public static void quickSort(int[] array){ if(array ...
- [排序] 快排 && 冒泡(自己写)
#include <iostream> using namespace std; /* 快速排序 通过一趟排序,以轴点为界 分割为两部分:左部分 <= 轴点 <= 右部分 再分 ...
- JS算法之快排&冒泡
1.快速排序思想: 1.1 先找数组的最中间的一个数为基准 1.2 把数组通过此基准分为小于基准的left数组和大于基准的right数组, 1.3 递归重复上面的两个步骤, 代码如下: functio ...
- java快排思想
1分治思想 1.1比大小在分区 1.2从数组中取出一个数做基准数 1.3将比他小的数全放在他的左边,比他大的数全放在他的右边 1.4然后递归 左边 和右边 }
- 使用Python完成排序(快排法、归并法)
class Sort(object): def quick_sort(self, ls): self.quick_sort_helper(ls, 0, len(ls) - 1) return ls d ...
- Java快排
package quickSort; /** * 快速排序 * @author root * */ public class QuickSort { static int[] data = {0,2, ...
- Java 排序(快排,归并)
Java 排序有Java.util.Arrays的sort方法,具体查看JDK API(一般都是用快排实现的,有的是用归并) package yxy; import java.util.Arrays; ...
随机推荐
- LVM扩展学习日志
lvm是逻辑卷管理的简称,它将一个或多个物理硬盘分区(PV)组成一个逻辑硬盘(VG)来使用, 然后从这个VG中划分出逻辑分区(LV), 以上概念是我理解的东西,可能和书上的不一样. 以下所有命令都是 ...
- web.xml 注册中央调度器Url-pattern 要注意的地方(五)
一.url-pattern 里面不能用/* 二.最好不要写成杠,如果使用“/”,中央调度器会把静态资源拦截掉,比如图片会不显示,或者css不能用. 但,如果地址栏传参数的时候比如是/del ...
- C#使用SendMessage实现进程间通信的方法
本文实例讲述了C#使用SendMessage实现进程间通信的方法.分享给大家供大家参考.具体分析如下: 为了深入理解消息机制,先来做一个测试项目 在新建项目的Form1的代码中,加入方法: ? 1 2 ...
- [内容分享]粗略判断Shader每条代码的成本
https://mp.weixin.qq.com/s/Vyn1bKaBMHommxbnFPPQeg Unity对Shader文件进行编译的时候,DX9和DX11的版本会直接生成汇编码. ? len ...
- jmeter-Http信息头管理器
今天遇到的问题是:一个报名接口,用户先要登录后,再去报名.而登录页面:用户名.密码.动态图形验证码,所以不能直接使用jmeter参数传值方法. 测试的时候,需要先登录,获取ticket后,才能去请求下 ...
- linux中sigsuspend和pause的区别
pause和sigsuspend都是用于等待信号的发生 简单的说,sigsuspend = unblock + pause sigsuspend 函数是用于需要先接触 某个信号的阻塞状态 然后等待该信 ...
- JS基础学习四:绑定事件
添加事件 IE: attachEvent Other: addEventListener var button = document.getElementById("buttonId&quo ...
- [SDOI2009]HH的项链 树状数组 BZOJ 1878
题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链 ...
- filter防止xxs攻击
什么是XSS攻击? XSS攻击使用Javascript脚本注入进行攻击 例如在表单中注入: <script>location.href='http://www.itmayiedu.com' ...
- Ubuntu 16.04设置root用户登录图形界面
ubuntu桌面版默认不开启root登录,所以需要进行设置, 可以参考博客 https://www.linuxidc.com/Linux/2017-01/139094.htm