• 选择排序


    思想:

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

    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);

  • 相关阅读:
    [BZOJ3413]匹配
    [BZOJ3879]SvT
    [BZOJ1339] [Baltic2008] Mafia / 黑手党
    [BZOJ1834] [ZJOI2010] network 网络扩容
    [BZOJ1449] [JSOI2009]球队收益 / [BZOJ2895] 球队预算
    [BZOJ2597] [WC2007]剪刀石头布
    [BZOJ1283]序列
    [BZOJ2127]happiness
    Java公开课-04.异常
    Java公开课-03.内部类
  • 原文地址:https://www.cnblogs.com/zyqBlog/p/5849788.html
Copyright © 2020-2023  润新知