zoukankan      html  css  js  c++  java
  • 选择排序

    思想:

    从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了

    c++:

    #include <iostream>
    
    using namespace std;
    
    void SelectionSort( int *a,int size)
    {
        for(int i = 0; i < size-1; i++)
        {
            int min_num = a[i];
            int min_index = i;
            for(int j = i+1; j < size; j++)
            {
                if(a[j] < min_num)
                {
                    min_num = a[j];
                    min_index = j;
                }
            }
    
            if(min_index != i)
            {
                a[min_index] = a[i];
                a[i] = min_num;
            }
        }
    }
    
    int main()
    {
        int arr[6] = {22,3,1,44,3,9};
        SelectionSort(arr,6);
        for(int i = 0; i < 6; i++ )
        cout << arr[i] << " ";
        return 0;
    }
    

      突然发现,java中arraylist很好用。

    package test;
    
    import java.util.ArrayList;
    
    public class test {
    	
    	public static void SelectionSort(ArrayList<Integer> a){
    		for(int i = 0; i < a.size()-1;i++){
    			int min_num = a.get(i);
    			int min_index = i;
    			
    			for(int j = i+1; j < a.size();j++){
    				if(a.get(j) < min_num){
    					min_num = a.get(j);
    					min_index = j;
    				}
    			}
    			
    			if(min_index != i){
    				a.set(min_index, a.get(i));
    				a.set(i, min_num);
    			}
    		}
    	}
    	
    	public static void main(String[]args){
    		
    		ArrayList<Integer> arr = new ArrayList<Integer>();
    		for(int i = 0; i < 20; i++){
    			int num = (int) (Math.random()*100);
    			arr.add(num);
    		}
    		
    		SelectionSort(arr);
    
    		
    		for(int i = 0; i < arr.size();i++)
    			System.out.print(arr.get(i) + " ");
    		}
    
    }
    

      

    选择排序是一个不稳定的排序算法: 

    例如:

    4,3,4,4,3,1

    第一次交换,4的相对位置就变了。

    选择排序时间复杂度为O(N^2);

  • 相关阅读:
    PHP 获取某年第几周的开始日期和结束日期的实例
    PHP科学计数法转换成数字
    laravel 辅助函数
    laravel5.3之后可以使用withCount()这个方法
    laravel 5.1 Model 属性详解
    laravel的启动过程解析
    转:按需加载html 图片 css js
    移动平台WEB前端开发技巧汇总(转)
    php重定向页面的三种方式
    zepto API参考(~~比较全面)
  • 原文地址:https://www.cnblogs.com/zyqBlog/p/5849788.html
Copyright © 2011-2022 走看看