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

    选择排序(Selection Sort)是一种简单直观的排序算法。工作原理如下:首先在未排序序列中找到最大(小)的元素,存放到序列的起始位置,然后再从剩余未排序序列中继续查找最大(小)的元素,然后存放到已排序序列的末尾。以此类摧,直到所有元素排序完毕。

    选择排序的主要优点与移动数据有关,如果某个元素位于正确的位置上,则它不会被移动。


    主要步骤:

    1.从序列开始到结尾查找最小的元素并存放到第一个位置。

    2.从剩余序列查找最小元素,存放到已排序序列末尾。

    3.重复第二步操作,直到全部元素有序。


    选择排序示意图:

    代码实现:

    C语言代码:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 #define N 10
     5 
     6 int main()
     7 {
     8     int i, j, k, temp;
     9     int arr[N] = {36, 58, 12, 59, 65, 96, 39, 68, 24, 86};
    10     for(i=0; i<N-1; i++) {
    11         k = i;
    12         for(j=i+1; j<N; j++) {
    13             if(arr[j] < arr[k]) {
    14                 k = j;
    15             }
    16         }
    17         if(k != i) {
    18             temp = arr[i];
    19             arr[i] = arr[k];
    20             arr[k] = temp;
    21         }
    22     }
    23     for(i=0; i<N; i++) {
    24         printf("%-3d", arr[i]);
    25     }
    26     printf("
    ");
    27     return 0;
    28 }

    Java代码:

     1 import java.util.Arrays;
     2 
     3 public class SelectionSort {
     4     
     5     public static void main(String[] args) {
     6         
     7         int arr[] = {36, 58, 12, 59, 65, 96, 39, 68, 24, 86};
     8         
     9         for(int i=0; i<arr.length-1; i++) {
    10             int k = i;
    11             for(int j=i+1; j<arr.length; j++) {
    12                 if(arr[j] < arr[k]) {
    13                     k = j;
    14                 }
    15             }
    16             if(k != i) {
    17                 int temp = arr[i];
    18                 arr[i]= arr[k];
    19                 arr[k] = temp;
    20             }
    21         }    
    22         System.out.println(Arrays.toString(arr));;
    23     }
    24 }

    参考资料:维基百科

    转载请注明出处:http://www.cnblogs.com/michaelwong/p/4114937.html


  • 相关阅读:
    ssh 无密码互通
    React之jsx转js
    分布式事务参考
    js跨域解决方案
    idea编译时JDK版本变化
    计数算法
    Rocketmq消息持久化
    rocketmq安装
    nginx高可用配置
    nginx负载均衡设置
  • 原文地址:https://www.cnblogs.com/michaelwong/p/4114937.html
Copyright © 2011-2022 走看看