package com.tw.ds.sort;
/**
* <p>选择排序法
* 选择排序算法的一般策略:搜索整个值列,以找到最小值。
* 将该值与值列中第一个位置上的值进行交换。搜索剩下的值列(第一个除外),以找到其中的最小值,
* 然后将其与值列中第二个位置上的值进行交换。对值列中的每个位置重复该过程。
* 在算法结束时,就完成了对值列的排序。
* </p>
* @author tangw 2010-11-22
*
*/
public class SelectSortMain {
/**
* 主方法
* @param args
*/
public static void main(String[] args) {
int ar[] ={12,88,10,2,3,5,6,11,3};
selectSort(ar);
for( int i=0;i<ar.length;i++){
System.out.println("---i="+i+" values:"+ar[i]);
}
}//end method main
/**
* <p>选择排序方法</p>
* @param arData
*/
public static void selectSort(int[] arData){
int len = arData.length;
for(int i=0;i<len;i++){//外循环
//最小值索引
int minIndex = i;
for(int j=i+1;j<len;j++){//内循环 arData[i]后的值
if( arData[j]<arData[minIndex] ){
minIndex = j;
}
}
//替换 将最小的值与当前arData[i]的值替换
if( i!= minIndex){
int temp = arData[i];
arData[i] = arData[minIndex];
arData[minIndex]=temp;
}
}
}//ebd method selectSort
}
分享到:
相关推荐
在实际编程中,尽管选择排序并不常用,但对于学习者来说,它是理解其他更高效排序算法(如快速排序和归并排序)的良好起点。 ### 结论: 虽然选择排序在效率上不如其他高级排序算法,但它简洁的实现和易于理解的...
在编程领域,排序算法是计算机科学中的一个基本概念,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序(如升序或降序)排列。...通过这个项目,你可以学习到如何在C#中编写排序算法,并进行实际的代码实践。
非支配排序遗传算法(NSGA-II)是一种广泛应用的多目标优化算法,特别是在复杂问题和工程设计中。在Python环境中,这种算法通常与Jupyter Notebook结合使用,方便进行交互式编程和结果可视化。以下是对NSGA-II算法...
本文将对几种经典的排序算法进行总结,包括冒泡排序、交换排序和选择排序,并对每种算法的特点、应用场景及时间复杂度等进行详细介绍。 #### 冒泡排序 **定义:** 冒泡排序是一种简单的排序算法,它重复地遍历待...
提供的压缩包文件“算法-理论基础- 排序- 直接选择排序(包含源程序).pdf”可能包含更详细的解释、示例代码以及可能的性能分析。通过阅读这份文档,你可以深入理解直接选择排序的工作机制,学习如何编写对应的源...
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
1. 排序算法:包括冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。排序算法是计算机科学的基础,它们在处理大量数据时尤其重要,可以优化数据检索和处理效率。 2. 搜索算法:如二分查找、广度优先...
在“sort.zip”文件中,开发者提供了这三种排序算法的实现,这对于学习和理解排序算法的原理非常有帮助。你可以通过阅读代码来深入理解每种算法的工作方式,甚至可以进一步优化这些算法,比如对插值排序进行改进,使...
本资源包含三个经典的排序算法的源代码:插入排序、选择排序和冒泡排序,这些都是初级到中级程序员常学习和使用的算法。下面将详细介绍这三个排序算法的工作原理、特点以及代码实现。 1. **插入排序(Insertion ...
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
6--[scratch算法练习-选择排序].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码6--[scratch算法练习-选择排序].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码6--[scratch算法练习-选择排序]....
9. **排序算法**:包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。这些排序算法在实际应用中各有优劣,应根据具体需求选择。 10. **查找算法**:如顺序查找、二分查找、跳表查找等,它们在不同...
"c++算法集-排序-链表-图-队列-二叉树实现"这个压缩包包含了C++语言实现的一些核心数据结构和算法,这些都是计算机科学的基础。 首先,我们来详细探讨排序算法。排序是计算机科学中最基本的操作之一,它涉及将一组...
在某些特定场景下,如需要保持相等元素顺序的排序,可能需要选择稳定排序算法。 数据结构和算法的学习不仅仅是理解算法的原理,还需要通过实践来加深理解。"数据结构和算法-13-快速排序.pdf"这个文件很可能是对快速...
在IT行业中,排序算法是计算机科学的...综上所述,这份资源集合为Swift开发者提供了一个全面的排序算法学习平台,不仅包括理论知识,还有实践代码和交互式展示,对于提升iOS开发者的算法能力和软件质量有着显著的帮助。
常见的算法有排序(如冒泡排序、选择排序、插入排序、快速排序、归并排序)、搜索(如线性搜索、二分搜索)、图算法(如深度优先搜索DFS、广度优先搜索BFS、最短路径算法Dijkstra、Floyd-Warshall)等。理解和掌握...
在这个"算法练习-选择排序"的少儿编程项目中,我们将深入学习和探讨选择排序这一经典算法,并通过Scratch游戏案例进行实践。 选择排序是一种简单直观的排序算法,它的基本思想是在未排序序列中找到最小(或最大)...
这可能包括经典的排序算法如冒泡排序、选择排序、插入排序、快速排序和归并排序,以及查找算法如线性查找、二分查找等。这些基础算法不仅是初学者的必修课,也是进阶学习其他高级算法的基础。 托马斯H.科尔曼是算法...
排序算法是计算机科学中至关重要的一环,特别是在处理大量数据时,高效的排序算法能极大...选择排序和冒泡排序虽然简单,但理解它们的工作原理可以帮助我们更好地理解更复杂的排序算法,并为今后的学习打下坚实的基础。
在C语言环境下,快速排序.c、insert_sort.c、select_sort.c和maopao_sort.c这四个文件分别对应快速排序、插入排序、选择排序和冒泡排序的源代码实现,读者可以通过阅读和学习这些代码来加深对这些排序算法的理解。