zoukankan      html  css  js  c++  java
  • 选择排序(selection sort)算法实现

        从字面上理解,就是通过不断地选择数组元素,从而达到排序的目的。我插入排序类似,假设第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[] = {5316657766441110986};
        output_array(data, 
    12);
        selection(data, 
    011);
        output_array(data, 
    12);
        
    return 0;
    }

  • 相关阅读:
    Oracle expdp 多表导出处理
    字符串
    Java设计模式
    多线程
    Java面向对象练习
    Java面向对象基础
    Java基础算法
    Java常识
    DOS基础命令(1)
    Java基础练习
  • 原文地址:https://www.cnblogs.com/nokiaguy/p/1200448.html
Copyright © 2011-2022 走看看