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);
}
}
分享到:
相关推荐
本文将深入探讨两种基本的排序算法:选择排序和冒泡排序,并通过实际代码实现和时间复杂度分析进行比较。 选择排序是一种简单直观的排序算法。它的基本思想是,在未排序的序列中找到最小(或最大)的元素,存放到...
选择排序: 每次在“无序”队列中选择“最小值”,放在有序队列最后,并从无序队列中删除该值。
**选择排序**是一种简单直观的排序算法,它的工作原理如下:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾...
* 冒泡排序: * 每次在无序队列里将相邻两个数一次进行比较, * 将小数调到前面,逐次比较,直至将最大的数移到 * 最后。将剩下的N-1个数继续比较,将次大数移至 * 倒数第二位。
希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一定的间隔进行分组,然后对每组...对于学习和理解排序算法,希尔排序是不可或缺的一部分。
- **冒泡排序**:最简单的排序算法之一,时间复杂度为O(n^2)。 2. **冒泡排序步骤**: - 遍历数组,比较相邻元素的值。 - 如果前一个元素大于后一个元素,则交换它们的位置。 - 这个过程会持续n-1轮(对于n个...
算法课程设计——分治法(java实现) 本课程设计报告的主要内容是对分治法的详细分析和讲解,并使用 Java 语言对其进行实现。分治法是一种经典的排序算法,它的主要思想是将问题分解为两个子序列,然后对子序列进行...
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
归并排序 在排序前,先建好一个长度等于原数组长度的临时数组
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级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 ...
比如排序算法,可以选择快速排序、冒泡排序、插入排序等。 2. **避免硬编码**:通过将不同的算法封装为策略类,可以避免在代码中直接使用if...else或switch...case语句进行硬编码,使得代码更加灵活,易于扩展和...
以上介绍了三种基本的排序算法——插入排序、冒泡排序和选择排序。虽然它们在处理小规模数据集时表现良好,但在大规模数据集面前,这些算法的性能通常不如更高效的算法,如快速排序、归并排序等。然而,了解这些基础...
快速排序 * 1.i=left,j=right,将基准数挖出形成第一个坑a[i]; * 2.j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]; * 3.i++由前向后找比它大的数,找到后挖出此数填到前一个坑a[j]中 * 4.以i为中线,...
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
进阶篇主要介绍数据结构、高级GUI设计、多线程、集合架构、网络和Web程序设计、算法效率和排序、MVC,以及高级Java数据库程序设计等方面的内容,循序渐进,可读性强。《Java语言程序设计——基础篇》以示例讲解解决...
自动生成500个随机数,然后对这500个随机数进行归并排序