`
wangleide414
  • 浏览: 606718 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

用Java实现常用排序算法

 
阅读更多

 

package com.zhaopin;

public class SortTest {
	static int data []={2,4,7,5,1,9,6,0,3,8};
	public static void main(String args[]){
		//sortDataByBubble(data); //冒牌排序
//		sortDataBySelect(data); //选择排序
//		sortDataByInsert(data); //选择排序
		sortDataByShell(data,data.length); //选择排序
     	printData(data);
	}
	/**
	 * 冒泡排序
	 * 时间复杂度为O(n的平方)
	 * 稳定的排序
	 * @param data
	 */
	public static void sortDataByBubble(int data[]){
		for(int i=0;i<data.length-1;i++){
			for(int j=i+1;j<data.length;j++){
				if(data[i]>data[j]){
					int temp=data[i];
					data[i]=data[j];
					data[j]=temp;
				}
			}
		}
	}
	/**
	 * 选择排序
	 * 时间复杂度为O(n的平方)
	 * 稳定的排序
	 * @param data
	 */
	public static void sortDataBySelect(int data[]){
		for(int i=0;i<data.length-1;i++){
			int tempData=i;
			for(int j=i+1;j<data.length;j++){
				if(data[tempData]>data[j]){
					tempData=j;
				}
			}
			if(tempData!=i){
				int temp=data[i];
				data[i]=data[tempData];
				data[tempData]=temp;
			}
		}
	}
	/**
	 * 直接插入排序
	 * 时间复杂度为O(n的平方)
	 * 稳定的排序
	 * @param data
	 */
	public static void sortDataByInsert(int data[]){
		int tempData;
		for(int i=1;i<data.length;i++){
			if(data[i-1]>data[i]){
				tempData=data[i];
				data[i]=data[i-1];
				int j;
				for(j=i-2;(j>=0)&&(data[j]>tempData);j--){
					data[j+1]=data[j];
				}
				data[j+1]=tempData;
			}
			printData(data); //输出每次步骤
			System.out.println();
		}
	}
	/**
	 * 希尔排序
	 * 时间复杂度为O(nLog2(n))
	 * 不稳定的排序
	 * @param data
	 */
	public static void sortDataByShell(int data[],int n){
		int gap=n/2;
		while(gap>0){
			for(int i=gap;i<n;i++){
				int temp;
				if(data[i-gap]>data[i]){
					temp=data[i];
					data[i]=data[i-gap];
					int j;
					for(j=i-2*gap;(j>0)&&(data[j]>temp);j=j-gap){
						data[j+gap]=data[j];
					}
					data[j+gap]=temp;
				}
			}
			gap=gap/2;
		}
	}
	/**
	 * 二路归并排序
	 * 时间复杂度为O(nLog2(n))
	 * 不稳定的排序
	 * @param data
	 */
	public static void sortDataByMerging(int data[],int n){
	}
	
	
	/**
	 * 输出数组的内容
	 * @param data
	 */
	public static void printData(int data[]){
		for(int i=0;i<data.length;i++){
			System.out.print(data[i]);
		}
	}
}
 

 

分享到:
评论

相关推荐

    常用排序算法java演示

    本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...

    Java实现常用排序算法

    本文将深入探讨Java中实现的四种基本排序算法:插入排序、交换排序(包括快速排序和冒泡排序)、选择排序以及归并排序。虽然树形选择排序和堆排序在这次实现中未涵盖,但理解这四种排序算法的基本原理和Java实现方式...

    java实现常用排序算法

    本文将深入探讨如何使用Java实现常见的排序算法,同时也会涉及到一些工具的使用和源码解析。 一、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,通过重复遍历待排序的数列,一次比较两个元素,如果他们的...

    Java常用排序算法源码

    在编程领域,排序算法是计算机科学中的核心概念,特别是在Java这样的高级编程语言中。排序算法是用来组织和优化数据结构的关键工具,使得数据按照特定规则(如升序或降序)排列。以下是对Java中几种常见排序算法的...

    用java实现常用的排序算法

    希望对大家有些帮助 用java实现常用的排序算法

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找

    本资料包聚焦于"Java常用排序算法"和"程序员必须掌握的8大排序算法",并深入探讨了"二分法查找"这一高效搜索技术。 首先,我们来看八大排序算法。这些算法包括: 1. **冒泡排序**:最简单的排序方法,通过不断交换...

    Java常用8大排序算法

    ### Java常用八大排序算法详解 #### 一、直接插入排序 **基本思想:** 直接插入排序的基本思路是在要排序的一组数中,假设前面 (n-1) [n&gt;=2] 个数已经排好顺序,现在要把第 n 个数插入到前面的有序数列中,使得这 ...

    JAVA实现扫描线算法(超详细)

    JAVA实现扫描线算法的优点是可以避免使用指针,可以使用对象数组和Node类来构造类似数组+指针的数据结构,代码更加简洁易懂。同时,JAVA实现扫描线算法也可以更好地支持多边形的填充和绘制。 7. JAVA实现扫描线算法...

    常用排序算法分析与实现(Java版)

    ### 常用排序算法分析与实现(Java版) #### 插入排序 **1. 直接插入排序** 直接插入排序是一种简单的排序方法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并...

    常用排序算法的java实现(冒泡、插入、选择、希尔、归并、快排)

    本篇文章将详细讲解标题中提到的六种常见排序算法的Java实现。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,它通过不断交换相邻的逆序元素来逐渐将较大的元素“浮”到数组的前端。在Java中,冒泡排序的基本...

    Java常用排序算法

    以下是关于"Java常用排序算法"的详细解释: 1. 插入排序(Insertion Sort) 插入排序是一种简单直观的排序算法,它的工作原理类似于我们日常生活中整理扑克牌的过程。算法分为两个阶段:遍历待排序的数组,将每个...

    java实现归并排序

    Java 实现归并排序是一种常用的排序算法,通过分治策略将原始数组分成小组,然后对每个小组进行排序,最后将排序好的小组合并成一个有序数组。下面是 Java 实现归并排序的知识点总结: 基本思想 归并排序的基本...

    常用排序算法总结(含Java代码)

    冒泡排序和快速排序是两种基础但广泛使用的数据排序算法。冒泡排序由于其简单直观的特性,易于理解和实现,而快速排序则以其较高的效率在数据量较大时展现出优势。 首先,让我们来看冒泡排序算法。冒泡排序通过重复...

    java基础常用排序算法

    Java基础常用的排序算法是编程学习中的重要组成部分,尤其对于初学者来说,掌握这些排序方法能够提升编程能力并有助于解决实际问题。在这个主题中,我们将深入探讨几种常见的排序算法,包括冒泡排序、插入排序、选择...

    常用的排序算法(java实现),附带一个PPT动画演示、详解了其中三种

    这里我们主要关注Java实现的排序算法,并结合一个PPT的动画演示来探讨其中的插入排序、直接插入排序和希尔排序。 首先,让我们深入理解插入排序。插入排序是一种简单的排序算法,其基本思想是将未排序的元素逐个...

    常用排序算法源码下载(Java实现)

    常用排序算法的Java实现源码,包括冒泡排序,快速排序,直接插入排序,希尔排序,直接选择排序,堆排序,归并排序,基数排序,计数排序。

    常用排序算法Java

    以上就是Java中实现的一些常用排序算法,它们各有优缺点,适用于不同的场景。理解并熟练掌握这些排序算法,有助于优化代码性能,提高编程能力。在实际开发中,应根据具体需求选择合适的排序算法,以达到最佳的效率和...

    八大排序算法总结(含Java实现源代码)

    这里我们将深入探讨八大排序算法,并结合Java语言来理解它们的实现原理。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的交换式排序算法。它通过重复遍历待排序的元素列表,比较相邻元素并根据需要交换它们,...

Global site tag (gtag.js) - Google Analytics