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

简介:     从字面上理解,就是通过不断地选择数组元素,从而达到排序的目的。我插入排序类似,假设第i(i#include void output_array(int data[], int n) {     int i;     for(i ...
    从字面上理解,就是通过不断地选择数组元素,从而达到排序的目的。我插入排序类似,假设第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 ;
}


国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》发布

《Java Web开发速学宝典》出版,欢迎定购

目录
相关文章
|
2月前
|
搜索推荐 算法 C语言
C语言选择排序算法,从入门到精通只需1秒!
C语言选择排序算法,从入门到精通只需1秒!
|
8天前
|
算法 前端开发 搜索推荐
前端算法之选择排序
前端算法之选择排序
12 0
|
27天前
|
人工智能 算法 搜索推荐
直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序——“数据结构与算法”
直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序——“数据结构与算法”
|
1月前
|
搜索推荐 算法 C语言
【排序算法】C语言实现选择排序与冒泡排序
【排序算法】C语言实现选择排序与冒泡排序
|
1月前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
|
1月前
|
机器学习/深度学习 搜索推荐 算法
【排序算法】插入排序与选择排序详解
【排序算法】插入排序与选择排序详解
|
2月前
|
搜索推荐 算法
【八大经典排序算法】选择排序
【八大经典排序算法】选择排序
13 0
|
2月前
|
存储 算法 搜索推荐
【数据结构与算法】:选择排序与快速排序
欢迎来到排序的第二个部分:选择排序与快速排序!
【数据结构与算法】:选择排序与快速排序
|
2月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--选择排序
数据结构与算法(Java篇)笔记--选择排序
|
2月前
|
搜索推荐 Java
Java实现选择排序算法
Java实现选择排序算法
15 0