選擇排序(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 閱讀(744)
評論(0) 編輯 收藏