选择排序(Selection sort)是一种简单直观的排序算法。
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,
然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
C++ 实现代码片段
//简单选择排序,按自然顺序
void selectsort(Element array[], int len){
int index, min, temp;
for(int i = 0; i < len - 1; i++){ // N - 1 趟
min = i;
//查找选择最小元素值的下标索引值
for(index = i + 1; index < len; index++){
if(array[min] > array[index])
min = index;
}
//交换
if(min != i){
temp = array[min];
array[min] = array[i];
array[i] = temp;
}
}
}
Java 实现代码片段
//简单选择排序,按自然顺序
public static void selectsort(int[] array){
int min, index, temp;
for(int i = 0; i < array.length - 1; i++){ // N - 1 趟
min = i;
//查找选择最小元素值的下标索引值
for(index = i + 1; index < array.length; index++){
if(array[min] > array[index])
min = index;
}
//交换
if(min != i){
temp = array[min];
array[min] = array[i];
array[i] = temp;
}
}
}
C++ 实现完整代码
/**
* <!--
* File : selectsort.h
* Author : fancy
* Email : fancydeepin@yeah.net
* Date : 2013-02-06
* --!>
*/
#include <stdio.h>
#include <stdlib.h>
#define length(array) sizeof(array) / sizeof(array[0])
#define Element int
#define format "%d"
//简单选择排序,按自然顺序
void selectsort(Element array[], int len){
int index, min, temp;
for(int i = 0; i < len - 1; i++){ // N - 1 趟
min = i;
//查找选择最小元素值的下标索引值
for(index = i + 1; index < len; index++){
if(array[min] > array[index])
min = index;
}
//交换
if(min != i){
temp = array[min];
array[min] = array[i];
array[i] = temp;
}
}
}
//遍历数组
void visit(Element array[], int len){
for(int i = 0; i < len; i++){
printf(format, array[i]);
}
}
/**
* <!--
* File : SelectSort.cpp
* Author : fancy
* Email : fancydeepin@yeah.net
* Date : 2013-02-06
* --!>
*/
#include "selectsort.h"
int main() {
Element array[10] = {4, 7, 2, 5, 8, 6, 9, 1, 0, 3};
selectsort(array, length(array));
visit(array, length(array));
return 0;
}
Java 实现完整代码
package net.yeah.fancydeepin.sort.select;
/**
* <!--
* Author : fancy
* Email : fancydeepin@yeah.net
* Date : 2013-02-06
* --!>
*/
public class Sort {
private Sort(){}
//简单选择排序,按自然顺序
public static void selectsort(int[] array){
int min, index, temp;
for(int i = 0; i < array.length - 1; i++){ // N - 1 趟
min = i;
//查找选择最小元素值的下标索引值
for(index = i + 1; index < array.length; index++){
if(array[min] > array[index])
min = index;
}
//交换
if(min != i){
temp = array[min];
array[min] = array[i];
array[i] = temp;
}
}
}
}
package test;
/**
* <!--
* Author : fancy
* Email : fancydeepin@yeah.net
* Date : 2013-02-06
* --!>
*/
import net.yeah.fancydeepin.sort.select.Sort;
public class Test {
public static void main(String[] args) {
int[] array = {4, 7, 2, 5, 8, 6, 9, 1, 0, 3};
Sort.selectsort(array);
for(int obj : array){
System.out.print(obj);
}
}
}
posted on 2013-02-06 09:52
fancydeepin 阅读(743)
评论(0) 编辑 收藏