文档章节

java 实现排序

忘川-hsm
 忘川-hsm
发布于 2017/05/29 19:07
字数 432
阅读 17
收藏 0
package com.hsm.mySort;

import java.util.Random;

/**
 * 排序
 * @author steven
 *
 */
public class MySort {
	public static void main(String[] args) {
		Random rd=new Random();
		int a[]=new int[100];
		for(int i=0;i<100;i++){
			a[i]=rd.nextInt(1000);
		}
		//bubbleSort(a);
		//insertSort(a);
		//shellSort(a);
		selectSort(a);
	}
	/**
	 * 冒泡排序
	 * @param a
	 */
	static void bubbleSort(int [] a){
		int temp=0;//临时交换
		for(int i=0;i<a.length;i++){//遍历
			boolean flag=false;//标识有没有交换
			for(int j=i+1;j<a.length;j++){
				if(a[i]>a[j]){
					temp=a[i];
					a[i]=a[j];
					a[j]=temp;
					flag=true;
				}
			}
			if(flag) break;//没有交换元素表明已经是有序的了
		}
		for (int i : a) {//输出排好序的元素
			System.out.println(i);
		}
	}
	/**
	 * 插入排序
	 * @param a
	 */
	static void insertSort(int [] a){
		int temp=0;//临时交换
		int j=0;
		for(int i=1;i<a.length;i++){//遍历
			temp=a[i];
			for(j=i;j>0&&a[j-1]>temp;j--){//将元素往后移
				a[j]=a[j-1];
			}
			a[j]=temp;//将元素插入到正确的位置
		}
		for (int i : a) {//输出排好序的元素
			System.out.println(i);
		}
	}
	/**
	 * 希尔排序
	 * @param a
	 */
	static void shellSort(int [] a){
		int temp=0;
		int j;
		for(int d=a.length/2;d>0;d/=2){//间隔每次为原来的1/2
			for(int i=0;i<a.length/d;i++){//这个地方其实就是插入排序
				temp=a[i];
				for(j=i;j>=d&&a[j-d]>temp;j-=d){//将元素往后移
					a[j]=a[j-d];
				}
				a[j]=temp;//将元素插入到正确的位置
			}
		}
		for (int i : a) {//输出排好序的元素
			System.out.println(i);
		}
	}
	/**
	 * 选择排序
	 * @param a
	 */
	static void selectSort(int [] a){
		int temp=0;//记录最小值的位置
		int temp2=0;
		for(int i=0;i<a.length;i++){//遍历
			boolean flag=false;//标识有没有交换
			for(int j=i;j<a.length;j++){
				if(a[j]<a[temp]){
					temp=j;
				}
			}
			if(flag) break;//没有交换元素表明已经是有序的了
			temp2=a[i];
			a[i]=a[temp];
			a[temp]=temp2;
		}
		for (int i : a) {//输出排好序的元素
			System.out.println(i);
		}
	}
}

© 著作权归作者所有

上一篇: java总结
忘川-hsm
粉丝 8
博文 84
码字总数 50675
作品 0
深圳
程序员
私信 提问
Java PriorityQueue && PriorityBlockingQueue

Java PriorityQueue && PriorityBlockingQueue 我们知道队列是遵循先进先出(First-In-First-Out)模式的,但有些时候需要在队列中基于优先级处理对象。举个例子,比方说我们有一个每日交易时...

秋风醉了
2015/01/12
0
0
可视化的数据结构和算法

还记得之前发布过的那个关于可视化排序的文章吗?在网上又看到了一个旧金山大学David Galles做的各种可视化的数据结构和基本算法的主页,网址在这里,大家可以看看。我把这个页面的目录列在下...

戴威
2011/05/12
962
5
《数据结构与算法系列》合集整理

《数据结构与算法系列》合集整理 整理来自博客园skywang12345,以下摘自作者介绍: “最近抽空整理了"数据结构和算法"的相关文章。在整理过程中,对于每种数据结构和算法分别给出"C"、"C++"...

kaixin_code
2018/12/01
0
0
在 Hibernate 中直接操作 JDBC 接口

简介: Hibernate 在处理多表关联及分组排序等复杂数据库查询操作时,其固有的 O-R 映射机制会产生大量冗余 SQL 操作,系统性能比传统的 JDBC 低很多。本文分析了 Hibernate 产生此类问题的原...

红薯
2010/04/16
752
2
JAXB Annotation初步使用

JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换...

秋风醉了
2014/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring系列教程八: Spring实现事务的两种方式

一、 Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。...

我叫小糖主
55分钟前
4
0
CentOS 的基本使用

1. 使用 sudo 命令, 可以以 root 身份执行命令, 必须要在 /etc/sudoers 中定义普通用户 2. 设置 阿里云 yum 镜像, 参考 https://opsx.alibaba.com/mirror # 备份mv /etc/yum.repos.d/CentO...

北漂的我
昨天
2
0
Proxmox VE技巧 移除PVE “没有有效订阅” 的弹窗提示

登陆的时候提示没有有效的订阅You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options. 用的是免费版的,所以每次都提示......

以谁为师
昨天
3
0
Java设计模式之外观模式(门面模式)

什么是外观模式   外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口...

须臾之余
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部