`

java常见的排序算法

阅读更多
package com.coding;

import java.util.Arrays;

public class Coding9 {
	private int[] src = new int[] { 38, 17, 16, 16, 7, 31, 39, 32, 2, 11 };

	public static void main(String[] args) {
		Coding9 c9 = new Coding9();
		// c9.SelectionSort(c9.src);//选择排序
		//c9.BubbleSort(c9.src);// 冒泡排序
		//c9.quickSort(c9.src,0,c9.src.length-1);// 快速排序
		//Arrays.sort(c9.src);// Arrays类自带的快速排序
		c9.InsertSort(c9.src);//插入排序
		for (int i : c9.src) {
			System.out.print(i + "|");
		}
	}

	/*
	 * 选择排序 选择排序的基本思想是遍历数组的过程中, 以 i 代表当前需要排序的序号, 则需要在剩余的中找出其中的最小值, 然后将找到的最小值与 i
	 * 指向的值进行交换。 因为每一趟确定元素的过程中都会有一个选择最值的子流程,所以人们形象地称之为选择排序。
	 * 
	 * 时间复杂度和空间复杂度分别为 O(n^2)和 O(1)
	 */
	public void SelectionSort(int[] src) {
		int len = src.length;
		int temp;
		for (int i = 0; i < len; i++) {
			temp = src[i];
			int j;
			int samllestLocation = i;// 最小数的下标
			for (j = i + 1; j < len; j++) {
				if (src[j] < temp) {
					temp = src[j];// 取出最小值
					samllestLocation = j;// 取出最小值所在下标
				}
			}
			src[samllestLocation] = src[i];
			src[i] = temp;
		}
	}

	/*
	 * 冒泡排序 冒泡排序可以算是最经典的排序算法了,实现方法最简单,两层 for循环, 里层循环中判断相邻两个元素是否逆序,
	 * 是的话将两个元素交换,外层循环一次,就能将数组中剩下的元素中最值的元素“浮”出,所以称之为冒泡排序。
	 * 
	 * 时间复杂度和空间复杂度分别为 O(n^2)和 O(1)
	 */
	public void BubbleSort(int[] src) {
		int len = src.length;
		for (int i = 0; i < len; i++) { // 最多做n-1趟排序
			for (int j = 0; j < len - i - 1; j++) {
				if (src[j] > src[j + 1]) { // 把大的值交换到后面
					int temp = src[j];
					src[j] = src[j + 1];
					src[j + 1] = temp;
				}

			}
		}
	}

	/*
	 * 快速排序 快速排序也是用归并方法实现的一个“分而治之”的排序算法, 它的魅力之处在于它能在每次partition(排序算法的核心所在)
	 * 都能为一个数组元素确定其排序最终正确位置(一次就定位准,下次循环就不考虑这个元素了)。
	 * 平均时间复杂度是n*logn 
	 */
	public void quickSort(int[] src, int left, int right) {
		int middle, tempDate;
		int i, j;
		i = left;
		j = right;
		middle = src[(i + j) / 2];
		do {
			// 找出左边比中间值大的数
			while (src[i] < middle && i < right)
				i++;
			// 找出右边比中间值小的数
			while (src[j] > middle && j > left)
				j--;

			if (i <= j) {
				// 将左边大的数和右边小的数进行替换
				tempDate = src[i];
				src[i] = src[j];
				src[j] = tempDate;
				i++;
				j--;
			}
		} while (i <= j);
		// 当两者交错时停止
		if (i < right) {
			quickSort(src, i, right);
		}
		if (j > left) {
			quickSort(src, left, j);
		}
	}
	/*
	 * 插入排序
	 * 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕
	 * 时间复杂度为 O(n^2)
	 */
	public void InsertSort(int[] src)
    {
       int len=src.length;
       for(int i=1;i<len;i++)
       {
           int j;
           int temp=src[i];
           for(j=i;j>0;j--)
           {
              if(src[j-1]>temp)
              {
                  src[j]=src[j-1];
                  
              }else//如果当前的数,不小前面的数,那就说明不小于前面所有的数,
                   //因为前面已经是排好了序的,所以直接通出当前一轮的比较
                  break;
           }
           src[j]=temp;
       }
    }

	
	
	

}

 

1
2
分享到:
评论

相关推荐

    Java常见排序算法

    这篇博客“Java常见排序算法”深入探讨了如何在Java中实现不同的排序方法,这对于我们理解和优化程序性能至关重要。以下是对这些常见排序算法的详细介绍: 1. **冒泡排序** (Bubble Sort): 冒泡排序是最基础的...

    Java常见排序算法源码集.rar

    这个名为"Java常见排序算法源码集.rar"的压缩文件显然包含了多种常用的排序算法的Java实现,对于初学者来说,这是一个非常宝贵的资源,可以深入理解各种算法的工作原理。 首先,我们来逐一探讨这些常见的排序算法:...

    Java常见排序算法.pdf

    Java常见排序算法主要包括插入排序、冒泡排序、选择排序和希尔排序等。下面将分别详细介绍这几种排序算法的原理、特点和在Java中的实现。 1. 插入排序(Insertion Sort) 插入排序的原理是通过构建有序序列,对于未...

    java实现数据结构常见排序算法及详解

    ### Java 实现数据结构常见排序算法及详解 #### 排序算法概述 排序算法是计算机科学中的基础概念之一,主要用于将一系列数据按照特定规则进行排列。根据数据处理方式的不同,排序算法大致分为两大类:比较排序与非...

    java 常见排序算法的实现 包括二叉树

    以上就是关于Java中常见排序算法(冒泡排序、选择排序、快速排序)的实现以及二叉树基本概念的介绍。这些算法和数据结构是编程学习中的重要组成部分,理解和熟练掌握它们对于解决实际问题大有裨益。通过不断的实践和...

    java常见排序算法合集讲解以及java实现.zip

    Java中常见的排序算法 1.直接插入排序 2.希尔排序 3.选择排序 4.冒泡排序 5.归并排序 6.快速排序 7.堆排序 8.计数排序 9.桶排序 10.基数排序 包含这十种算法的讲解以及动态图解(ppt)和java实现

    常见的七大排序算法Java实现.zip

    本压缩包"常见的七大排序算法Java实现.zip"包含了七种经典的排序算法在Java语言中的实现。尽管文件列表中并未明确列出每种排序算法的名称,但根据常规,这七大排序算法可能包括冒泡排序、插入排序、选择排序、快速...

    各种排序算法比较(java实现)

    `Algorithm.java`文件可能包含了这些排序算法的Java实现代码,而`常见排序算法的实现与性能比较.doc`文档则可能详细比较了这些算法的性能和适用场景。`readme.txt`文件可能是对整个项目的简要说明,包括如何运行和...

    java实现常见排序算法

    Java作为广泛应用的编程语言,提供了一种高效的方式来实现各种排序算法。本文将深入探讨Java中实现的两种主要排序类型:插入排序和交换排序。 插入排序是一种简单直观的排序算法,它的工作原理类似于我们日常生活中...

    Java所有排序算法大全

    以上就是Java中几种常见排序算法的概述。在实际开发中,我们需要根据数据特性和性能要求选择合适的排序算法。例如,对于大数据量,快速排序和堆排序通常是更好的选择,而对于小规模或部分有序的数据,插入排序或冒泡...

    java常见八种排序算法

    本篇文章将详细探讨Java中常见的八种排序算法,每一种都有其独特的特性和适用场景。 1. **冒泡排序(Bubble Sort)** 冒泡排序是最基础的排序算法之一,通过不断交换相邻的逆序元素来逐步完成排序。它的时间复杂度为...

    常见排序算法的实现与性能比较JAVA版

    常见排序算法的实现与性能比较JAVA 问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 实验要求: A. 在随机产生的空间大小分别为 N = 10, 1000,10000,100000 的排序样本(取值为[0...

    Java各种排序算法代码

    下面我们将详细探讨Java中常见的几种排序算法。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的交换排序,通过不断比较相邻元素并交换位置,将最大或最小的元素逐渐“冒泡”到数组的一端。虽然效率较低,但其...

    Java各种排序算法代码.

    本资源包含的是Java实现的各种常见排序算法的代码示例,每个算法都有详细的注释,方便初学者理解和学习。 1. **冒泡排序**:这是一种基础的排序算法,通过不断交换相邻的逆序元素来逐渐把较大的元素推向数组的后部...

    Java数据挖掘常见18种算法实现和10种常见排序算法以及其他相关经典DM算法集合.zip

    Java数据挖掘18大算法实现和10大常见排序算法以及其他相关经典DM算法集合。 18大数据挖掘的经典算法以及代码实现,涉及到了决策分类,聚类,链接挖掘,关联挖掘,模式挖掘等等方面,后面都是相应算法的文章,希望能够...

    常用排序算法java演示

    首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一种简单的交换排序,通过重复遍历数组,比较相邻元素并根据需要交换它们,直到没有任何一对数字需要交换。Java中实现冒泡排序的...

Global site tag (gtag.js) - Google Analytics