• 选择排序


    选择排序(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


  • 相关阅读:
    python 模拟(简易)音乐播放器
    Python中的多态如何理解?(转)
    mysql踩得坑
    python简单模拟博客园系统
    04 信号量
    02 事件
    01 管道
    32 管道 事件 信号量 进程池 线程的创建
    02 验证进程之间是空间隔离的
    01 进程的其他方法
  • 原文地址:https://www.cnblogs.com/michaelwong/p/4114937.html
Copyright © 2020-2023  润新知