选择排序

来源:互联网 发布:java split 效率 编辑:程序博客网 时间:2024/06/08 17:25

转载请注明出处:http://blog.csdn.net/u012572172/article/details/41324823


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

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


主要步骤:

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

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

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


选择排序示意图:

代码实现:

C语言代码:

#include <stdio.h>#include <stdlib.h>#define N 10int main(){    int i, j, k, temp;    int arr[N] = {36, 58, 12, 59, 65, 96, 39, 68, 24, 86};    for(i=0; i<N-1; i++) {        k = i;        for(j=i+1; j<N; j++) {            if(arr[j] < arr[k]) {                k = j;            }        }        if(k != i) {            temp = arr[i];            arr[i] = arr[k];            arr[k] = temp;        }    }    for(i=0; i<N; i++) {        printf("%-3d", arr[i]);    }    printf("\n");    return 0;}
Java代码:

import java.util.Arrays;public class SelectionSort {public static void main(String[] args) {int arr[] = {36, 58, 12, 59, 65, 96, 39, 68, 24, 86};for(int i=0; i<arr.length-1; i++) {int k = i;for(int j=i+1; j<arr.length; j++) {if(arr[j] < arr[k]) {k = j;}}if(k != i) {int temp = arr[i];arr[i]= arr[k];arr[k] = temp;}}System.out.println(Arrays.toString(arr));;}}
参考资料:维基百科


0 0
原创粉丝点击