`

Java 选择排序 (基于数组) 附图解

阅读更多

 步骤:

    从表的开始位置进行比较,每次迭代

    1.找出最小元素的位置

    2.将这个最小元素移到未排序表的起始位置

    比较次数O(n2),交换次数O(n)

  如图所示:

public class SelectionSort {
	public void selectionSort(int[] arr, int last) {
		int i, minIndex;
		for (i = 0; i < last; i++) {
			minIndex = minLocation(arr, i, last);// 找到最小元素的索引
			swap(arr, i, minIndex);// 交换
		}
	}

	private int minLocation(int[] arr, int first, int last) {
		int minIndex = first;
		for (int i = first + 1; i <= last; i++) {
			if (arr[i] < arr[minIndex])
				minIndex = i;
		}
		return minIndex;
	}

	private void swap(int[] arr, int loc, int minIndex) {
		int temp;
		temp = arr[loc];
		arr[loc] = arr[minIndex];
		arr[minIndex] = temp;

	}

	public static void main(String[] args) {
		int arr[] = { 2, 568, 34, 46, 9, 23, 89, 43, 572, 684, 783, 543 };
		SelectionSort ss = new SelectionSort();
		ss.selectionSort(arr, arr.length - 1);
		for (int i = 0; i < 12; i++) {
			System.out.print(arr[i] + ",");
		}
	}
}

 

选择排序

  • 大小: 93.1 KB
分享到:
评论

相关推荐

    冒泡排序和选择排序的详解(包含图解和java代码)

    通过以上详细的介绍和分析,我们可以看到冒泡排序和选择排序都是基于比较的简单排序算法。虽然这两种算法在实际应用中效率不高,但由于其实现简单且易于理解,常被用作学习排序算法的基础。在处理小规模数据时,这两...

    JavaSE基础篇 -- jdk配置,数组及其应用,栈和堆内存图解(Java源码)

    此外,Java提供了多种数组操作,如System.arraycopy()用于复制数组部分,Arrays.sort()进行排序,以及Arrays.equals()比较两个数组是否相等。 栈和堆是Java内存管理中的两个关键区域。栈主要用于存储局部变量、方法...

    java冒泡排序、快速排序、二分查找

    快速排序是一种 Divide and Conquer 排序算法,通过选择一个ivot 将数组分成两个部分,然后递归地对这两个部分进行排序。 图解: 首先取出下标为 0 的数,然后依次与下标为 1,2…比较,如果 arr[0]&gt;arr[x]时,我们...

    希尔排序算法Java简单解释

    - 将待排序数组按照增量`g[i]`分成若干个子序列,每个子序列包含`g[i]`个元素。 - 对每个子序列进行插入排序。插入排序的基本操作是将一个记录插入到已经排序好的有序表中,从而得到一个新的、记录数增1的有序表。...

    Java图解创意编程:从菜鸟到互联网大厂之路.pptx

    2. Java常用算法和数据结构:冒泡排序、选择排序、插入排序、链表、树等。 3. Java网络编程基础知识:TCP/IP协议、Socket编程、HTTP协议等。 4. Java Web开发基础知识:Servlet、JSP、JavaBean、MVC模式等。 本书...

    排序算法图解--Document.zip

    通过图解的方式,我们可以更直观地理解每种算法的运作过程,加深记忆,并根据实际需求选择合适的排序方法。在实际编程中,如Java、Python等语言都提供了内置的排序函数,但在特定场景下,手动实现排序算法可能会带来...

    【超全!】图解Java数据结构和算法(共195集)【资料+视频+课件+代码+笔记】

    稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、...

    数组应用&二维数组.doc

    Java中有多种排序算法,例如选择排序、冒泡排序、快速排序等。这里我们只介绍选择排序。 选择排序的思路是:首先,遍历数组中的每一个元素,然后选择最小或最大的元素,并将其放置在数组的开头或结尾。 代码: ``...

    最快的排序算法 图解八大排序算法——我见过的最详细的讲解(转),排序算法数据结构

    选择排序是一种简单的排序算法,思路是选择数组中的最小元素,和第一个元素交换,然后在剩下的元素中选择最小元素,和第二个元素交换,以此类推,直到排序完成。时间复杂度为 O(n^2),空间复杂度为 O(1)。Java 代码...

    Java基础技术栈图解大全-xmind源文件

    这个"Java基础技术栈图解大全-xmind源文件"应该包含以上各方面的详细图解,帮助初学者直观地理解每个知识点,并形成完整的Java技术体系概念。通过学习和实践这些内容,开发者将能够熟练地运用Java进行软件开发。

    常用排序算法分析与实现

    快速排序是高效的交换排序,基于分治策略,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以...

    图文讲解Java中实现quickSort快速排序算法的方法

    在Java中实现快速排序,通常采用递归的方式。首先,我们需要一个快速排序函数,接受一个整数数组和两个索引参数,表示需要排序的子数组范围。在这个例子中,函数`quickSort(int[] array, int start, int end)`用于...

    8张图解java

    - `TreeSet`: 基于红黑树实现的Set,可以自然排序或根据Comparator排序。 - `HashMap`: 基于哈希表实现的Map。 - `TreeMap`: 基于红黑树实现的Map,可以自然排序或根据Comparator排序。 **重要类库**: - `...

    数据结构Java版本.pdf

    - **数组(Array)**:在Java中,数组是一种基本的数据结构,可以存储相同类型的多个元素。它通过索引访问元素,提供快速的随机访问。 - **链表(List)**:分为单向链表、双向链表等类型。链表中的每个元素都包含指向...

    冒泡排序教程和示例代码

    通常,PPT会包括冒泡排序的步骤图解,动画演示,以及如何优化冒泡排序(比如引入一个标志位来判断是否在一轮遍历中进行了交换,以提前结束排序等)。 冒泡排序的时间复杂度为O(n^2),不适合处理大规模数据,但在...

    java基础思维导图.pdf

    - **排序**: 包括冒泡排序、选择排序等常见排序算法。 - **查找**: 如二分查找法,适用于有序数组的查找。 #### 高级特性 - **类与对象**: - 类定义了对象的行为和属性。 - 对象是类的实例。 - 构造方法用于...

    Java数据结构和算法中文第二版(1)

    通过由基于JAVA的演示所组成的可视专题讨论来掌握数据结构和算法 学会如何为常见和不太常见的编程条件选择正确的算法 利用数据结构和算法为现实世界的处理过程建模 了解不同的数据结构的优势和弱点,考虑如何利用...

    quick sort算法图解

    1. 选择基准值(pivot):选择数组中的一个元素作为基准值,不同的选择基准值的方法可能会影响排序的效率。 2. 分割数组(Partition):重新排列数组,所有比基准值小的元素摆放在基准前面,而比基准值大的元素摆在...

    咖啡9数据结构和算法20174.epub.7z(java)

    1. **排序算法**:包括冒泡排序、选择排序、插入排序、快速排序、归并排序等,它们用于将一组数据按特定顺序排列。 2. **搜索算法**:如二分查找、广度优先搜索(BFS)、深度优先搜索(DFS),用于在数据结构中寻找目标...

Global site tag (gtag.js) - Google Analytics