簡單選擇排序是指一種排序算法,在簡單選擇排序過程中,所需移動記錄的次數比較少。最好情況下,即待排序記錄初始狀態就已經是正序排列了,則不需要移動記錄。
方法是設所排序序列的記錄個數為n。i取1,2,…,n-1,從所有n-i+1個記錄(Ri,Ri+1,…,Rn)中找出排序碼最小的記錄,與第i個記錄交換。執行n-1趟 後就完成了記錄序列的排序。
基本介紹
- 中文名:簡單選擇排序
- 外文名:Select Sort
- 分類:數據結構
- 定義:排序算法 數據結構
基本概念
相關運用
#include<stdio.h>main(){ int a[10],i,j,k,t; printf("input10numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(i=0;i<10;i++) { t=i; for(j=i+1;j<10;j++) { if(a[t]>a[j]) { t=j; } } int temp = a[i]; a[i]=a[t]; a[t]=temp; } printf("thesortednumbers:\n"); for(i=0;i<10;i++) printf("%-3d",a[i]);}
template<class datatype>void seqlist<datatype>::insertsort(){ int i,j,k; datatype temp; for(i=0;i<last;i++) { k=i; for(j=i+1;j<=last;j++) if(data[j]<data[k]) k=j; if(i!=k) //第i個元素與第k個元素交換 { temp=data[k]; data[k]=data[i]; data[i]=temp; } } delete_data(1);};
void Select_Sort(datatype R[],int n){ //對排序表R[1].....R[n]進行冒泡排法,n是記錄個數 for(i=1; i<n; i++) /*做n-1趟選取*/ { k=i; /*在i開始的n-i+1個記錄中選關鍵碼最小的記錄*/ for(j=i+1;j<=n;j++) if(R[j].key<R[k].key) k=j; /*k中存放關鍵碼最小記錄的下標*/ if(i!=k) /*關鍵碼最小的記錄與第i個記錄交換*/ { int temp; temp=R[k]; R[k]=R[i]; R[i]=temp; } }}
public class SimpleSort{ public static void sort(Comparable[] data){ //數組長度 int len=data.length; for(int i=0; i<len; i++){ //記錄當前位置 int position = i; //找出最小的數,並用position指向最小數的位置 for(int j=i+1; j<len; j++){ if( data[position].compareTo(data[j]) > 0 ) { position=j; }//endif }//endfor //交換最小數data[position]和第i位數的位置 Comparable temp=data[i]; data[i]=data[position]; data[position]=temp; }//endfor }//endsort public static void main(String[] args) { //在JDK1.5版本以上,基本數據類型可以自動裝箱 //int,double等基本類型的包裝類已實現了Comparable接口 Comparable[] c={4,9,23,1,45,27,5,2}; sort(c); for(Comparable data:c) { System.out.println(data); } }}
+(void)sort:(NSMutableArray*)array{ inti,y,min; for(i=0;i<[arraycount];i++){ min=i; for(y=i+1;y<[arraycount];y++){ if([[arrayobjectAtIndex:min]intValue]>[[arrayobjectAtIndex:y]intValue]){ min=y; } } if(min!=i){ [arrayexchangeObjectAtIndex:iwithObjectAtIndex:min]; } } }
function sort_select( $arr ){ for( $i=0; $i<count($arr); $i++ ){ $t = $i; for( $j=$i+1; $j<count($arr); $j++ ){ if( $arr[ $j ] < $arr[ $t ] ){ $t = $j; } } if( $t != $i ){ $arr[ $i ] ^= $arr[ $t ]; $arr[ $t ] ^= $arr[ $i ]; $arr[ $i ] ^= $arr[ $t ]; } } return $arr;}
public void SimpleSelectSort(int[] array){ int tmp=0; int t=0;//最小數標記 for(int i=0; i<array.Length; i++) { t=i; for(int j=i+1; j<array.Length; j++) { if(array[t]>array[j]) { t=j; }}tmp=array[i];array[i]=array[t];array[t]=tmp;Python3實現def select_sort(array): lenth = len(array) for i in range(lenth): for j in range(i, lenth): if array[j] < array[i]: array[i], array[j] = array[j], array[i] return array