`
cooliufang
  • 浏览: 129697 次
社区版块
存档分类
最新评论

Java排序算法之 —— 选择排序

阅读更多
package algorithm.sort;


/**
 * 选择排序:首先找出数组中的最小元素,将其与数组的第一个元素交换,
 * 接着找出次小元素,将其与数组的第二个元素交换
 * 对数组中的前n-1个元素执行这一过程
 * @author Administrator
 *
 */
public class SelectSort {
	
	//对数组指定的元素进行排序
	public void selectSort(int[] a, int from, int end) {
		int minIndex; //记录最小元素的索引
		for (int i = from; i <= end; i++) {
			minIndex = i;	//首先假设最小元素为每次循环的第一个元素
			for(int j = i+1; j <= end; j++) {
				if(a[j] < a[minIndex])
					minIndex = j;	//找出最小元素对应的索引
			}
			
			//交换最小元素与每次循环的第一个元素
			exchange(a, i, minIndex);			
		}
	}
	
	//对整个数组排序
	public void selectSort(int[] a) {
		selectSort(a, 0, a.length-1);
	}
	
	//交换数组中的两个元素
	public void exchange(int[] a, int i, int j) {
		int temp = a[i];
		a[i] = a[j];
		a[j] = temp;
	}

	//打印数组
	public void printArr(String str, int[] a) {
		System.out.print(str + "\t");
		for(int i = 0; i < a.length; i++)
			System.out.print(a[i] + " ");
		System.out.println();
	}
	
	//测试数据
	public static void main(String[] args) {		
		SelectSort ss = new SelectSort();
		int[] a = {1,4,3,7,5,8,0};
		ss.printArr("原始数组为:", a);
		ss.selectSort(a);
		ss.printArr("合并排序后:", a);	
	}
}


//output~
原始数组为: 1 4 3 7 5 8 0
合并排序后: 0 1 3 4 5 7 8
分享到:
评论

相关推荐

    java语言排序——选择排序法和冒泡排序法(排序时间的测试盒比较)

    本文将深入探讨两种基本的排序算法:选择排序和冒泡排序,并通过实际代码实现和时间复杂度分析进行比较。 选择排序是一种简单直观的排序算法。它的基本思想是,在未排序的序列中找到最小(或最大)的元素,存放到...

    java算法——选择排序

    选择排序: 每次在“无序”队列中选择“最小值”,放在有序队列最后,并从无序队列中删除该值。

    算法可视化系列——排序算法——选择排序

    **选择排序**是一种简单直观的排序算法,它的工作原理如下:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾...

    java算法——冒泡排序

    * 冒泡排序: * 每次在无序队列里将相邻两个数一次进行比较, * 将小数调到前面,逐次比较,直至将最大的数移到 * 最后。将剩下的N-1个数继续比较,将次大数移至 * 倒数第二位。

    算法可视化系列——排序算法——希尔排序

    希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一定的间隔进行分组,然后对每组...对于学习和理解排序算法,希尔排序是不可或缺的一部分。

    算法可视化系列——排序算法——冒泡排序

    - **冒泡排序**:最简单的排序算法之一,时间复杂度为O(n^2)。 2. **冒泡排序步骤**: - 遍历数组,比较相邻元素的值。 - 如果前一个元素大于后一个元素,则交换它们的位置。 - 这个过程会持续n-1轮(对于n个...

    算法课程设计——分治法(java实现)

    算法课程设计——分治法(java实现) 本课程设计报告的主要内容是对分治法的详细分析和讲解,并使用 Java 语言对其进行实现。分治法是一种经典的排序算法,它的主要思想是将问题分解为两个子序列,然后对子序列进行...

    《Java语言程序设计——基础篇》第三章选择作业答案.zip

    进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...

    java算法——归并排序

    归并排序 在排序前,先建好一个长度等于原数组长度的临时数组

    《Java语言程序设计——基础篇》第三章选择示例.zip

    进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...

    java算法——希尔排序

    按下标的一定增量分组,对每组使用直接插入算法排序;随着增量 * 逐渐减少,每组包含的关键字越来越多,当增量减至1时,整个文件恰 * 好被分成一组,算法便终止。 * 8,9,1,7,2,3,5,4,6,0 * //初始增量 gap=...

    算法可视化系列——排序算法——快速排序

    **AlgorithmQuickSort.java** 文件很可能是实现快速排序算法的Java代码。在Java中,快速排序通常通过递归函数实现。以下是一个简单的快速排序的Java实现示例: ```java public class QuickSort { public void ...

    java设计模式之——策略模式

    比如排序算法,可以选择快速排序、冒泡排序、插入排序等。 2. **避免硬编码**:通过将不同的算法封装为策略类,可以避免在代码中直接使用if...else或switch...case语句进行硬编码,使得代码更加灵活,易于扩展和...

    java版本排序算法

    以上介绍了三种基本的排序算法——插入排序、冒泡排序和选择排序。虽然它们在处理小规模数据集时表现良好,但在大规模数据集面前,这些算法的性能通常不如更高效的算法,如快速排序、归并排序等。然而,了解这些基础...

    java算法——快速排序

    快速排序 * 1.i=left,j=right,将基准数挖出形成第一个坑a[i]; * 2.j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]; * 3.i++由前向后找比它大的数,找到后挖出此数填到前一个坑a[j]中 * 4.以i为中线,...

    《Java语言程序设计——基础篇》第一章计算机、程序和Java概述作业答案.zip

    进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...

    《Java语言程序设计——基础篇》第五章方法示例.zip

    进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...

    《Java语言程序设计——基础篇》第四章循环示例.zip

    进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...

    排序算法——归并排序

    自动生成500个随机数,然后对这500个随机数进行归并排序

Global site tag (gtag.js) - Google Analytics