选择排序 _ O(n^2)

定义:把当前位置和其后最小的元素调换位置,直至整个数组有序。

特点:交换次数最少的排序算法。

c++代码:

#include <iostream>
using namespace std;

template<typename T>
void selectionSort( T arr[] , int n ){
    for( int i=0 ; i<n-1 ; i++ ){
        int minIndex = i;
        for( int j=i+1 ; j<n ; j++ ){
            if( arr[j] < arr[minIndex] ){
                minIndex = j;
            }
        }
        swap(arr[i], arr[minIndex]);
    }
}

Java代码:

public class SelectionSort {
    
    public static void sort( Comparable[] arr ){
        for( int i=0 ; i<arr.length-1 ; i++ ){
            int minIndex = i;
            for( int j=i+1 ; j<arr.length ; j++ ){
                if( arr[j].compareTo( arr[minIndex] ) < 0 ){
                    minIndex = j;
                }
            }
            SortTestHelper.swap(arr, i, minIndex);
        }
    }

}

选择排序可视化🌰 http://mengmei219.top/Algorithm/selectSort/selectSort.php

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 初级排序算法 排序算法关注的主要是重新排列数组元素,其中每个元素都有一个主键。排序算法是将所有元素主键按某种方...
    深度沉迷学习阅读 1,642评论 0 1
  • 定义:从索引1开始,与前面的元素逐个比较,若比前面的元素小,则交换位置。由于前面的序列是有序的,若当前元素大于前一...
    孟圆的笔记阅读 238评论 0 0
  • 本文首发于我的个人博客:尾尾部落 排序算法是最经典的算法知识。因为其实现代码短,应该广,在面试中经常会问到排序算法...
    繁著阅读 4,702评论 3 118
  • 当蓝心说要组织一次断舍离的分享会的时候,第一感觉就是我要去参加。蓝心满满的正能量,我想去认识她。同时,上海也是一个...
    橙西Bb阅读 441评论 4 6
  • 前言: 在Jenkins的使用中邮件提醒是一个常用功能,Extended E-mail Notification是...
    小喜_ww阅读 5,230评论 4 3

友情链接更多精彩内容