选择排序(selection sort)算法实现

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介:
 从字面上理解,就是通过不断地选择数组元素,从而达到排序的目的。我插入排序类似,假设第i(i<n)个数组元素data[0]是最大的(从大到小排序),然后依次扫描i + 1 到 n - 1的元素,找到比第i个元素大的元素。最后将它们交换。
算法的时间复杂度为 O(n^2)

算法的实现如下
#include  < stdio.h >

void  output_array( int  data[],  int  n)
{
    
int  i;
    
for (i  =   0 ; i  <  n; i ++ )
        printf(
" %d  " , data[i]);
    printf(
" \n " );
}
void  swap( int   * a,  int   * b)
{
    
int  x;
    x 
=   * a;
    
* =   * b;
    
* =  x;
}
// 算法实现
void  selection( int  data[],  int  b,  int  e)
{
    
int  i, j, high_index;
    
for (i  =  b; i  <  e; i ++ )
    {
        high_index 
=  i;
        
for (j  =  e; j  >  i; j -- )
            
if (data[j]  >  data[high_index])
                high_index 
=  j;
        swap(
& data[i],  & data[high_index]);
    }
}
int  main()
{
    
int  data[]  =  { 5 3 1 665 77 66 44 11 10 9 8 6 };
    output_array(data, 
12 );
    selection(data, 
0 11 );
    output_array(data, 
12 );
    
return   0 ;
}




 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/215347,如需转载请自行联系原作者

相关文章
|
搜索推荐 算法 Java
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
该博客文章通过UML类图和Java源码示例,展示了如何使用适配器模式将QuickSort类和BinarySearch类的排序和查找功能适配到DataOperation接口中,实现算法的解耦和复用。
299 1
现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
|
搜索推荐 算法 Java
sort-05-insert sort 插入排序算法详解
这是一个关于排序算法的系列文章总结,包括冒泡排序、快速排序、选择排序、堆排序、插入排序等10种排序算法的详细讲解和Java实现。插入排序是一种简单直观的排序算法,通过构建有序序列并逐个插入新元素来排序。提供的Java代码展示了插入排序的实现过程,并附有测试示例。所有算法已开源在GitHub项目[https://github.com/houbb/sort](https://github.com/houbb/sort)中。
|
人工智能 搜索推荐 算法
sort-04-heap sort 堆排序算法详解
这是一个关于排序算法的系列文章摘要,包括了10篇关于不同排序算法的链接,如冒泡排序、快速排序、选择排序、堆排序等。堆排序是一种基于比较的排序算法,利用了近似完全二叉树的结构并满足最大堆或最小堆的性质。最大堆中,每个节点的值都大于或等于其子节点。文章详细解释了最大堆的概念、节点访问方式以及堆的操作,包括堆调整和堆排序的过程,并通过图解展示了堆排序的具体步骤。此外,还提供了一个Java实现的堆排序代码示例。整个排序系列来源于一个开源项目,读者可以通过链接查看完整内容。
sort-04-heap sort 堆排序算法详解
|
搜索推荐 算法 Java
sort-01-bubble sort 冒泡排序算法详解
这是一个关于排序算法的系列文章摘要。作者整理了10种不同的排序算法,包括冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、计数排序、桶排序和大文件外部排序。文章详细介绍了冒泡排序的工作原理、流程,并提供了代码实现,强调了在实现中考虑的改进点,如统一接口、实用性增强和日志输出。此外,还提供了一个排序接口和工具类以方便使用,并通过测试代码和日志展示了排序过程。整个系列旨在帮助读者理解和掌握排序算法。相关代码已开源在GitHub。
|
搜索推荐 算法 Java
sort-06-shell sort 希尔排序算法详解
这是一个关于排序算法的系列文章摘要。文章汇总了各种排序算法,包括冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序、归并排序、计数排序、桶排序以及大文件外部排序。特别地,希尔排序是一种改进的插入排序,通过使用不同的步长对元素进行分组排序,以提高效率。算法最终以较小的步长进行排序,接近线性时间复杂度。文章还提供了Java代码实现,并举例说明了希尔排序的过程。所有内容可在开源项目[https://github.com/houbb/sort](https://github.com/houbb/sort)中找到。
|
存储 算法 JavaScript
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(二)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
578 0
|
算法 搜索推荐 程序员
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)(一)
【C++ 泛型编程 入门篇】 C++ 中的泛型算法 STL(sort,find)
423 0
|
机器学习/深度学习 算法 自动驾驶
【计算机视觉】Deep SORT多目标跟踪算法讲解(图文解释 超详细)
【计算机视觉】Deep SORT多目标跟踪算法讲解(图文解释 超详细)
2442 0
|
机器学习/深度学习 算法 TensorFlow
【计算机视觉+Tensorflow】SORT目标跟踪算法的讲解(图文解释 超详细)
【计算机视觉+Tensorflow】SORT目标跟踪算法的讲解(图文解释 超详细)
1073 0
|
Web App开发 算法 JavaScript
JS中数组随机排序实现(原地算法sort/shuffle算法)
JS中数组随机排序实现(原地算法sort/shuffle算法)
590 1
JS中数组随机排序实现(原地算法sort/shuffle算法)

热门文章

最新文章