選択による並べ替え方法を実装する手順: まず最小の数値を見つけてそれを先頭に入れ替え、次に残りの数値の中から最小の数値を見つけて残りの数値の前に入れ替え、最後にこれを繰り返します。すべての数字を並べるだけです。
選択ソート方法を実装する手順: 最小の数値を見つけてそれを先頭に入れ替え、次に残りの数値の中から最小の数値を見つけてそれを前に入れ替えます。残りは先頭から数えて、すべての数字が揃うまでこの手順を繰り返します。
[推奨コース: C 言語チュートリアル]
選択ソート法は C 言語では比較的一般的な方法で、バブル法に比べてソート効率が高く、アルゴリズムも複雑ではありません。
選択の並べ替え方法のアイデアは次のとおりです:
1. 最小の数値を見つけて、それを先頭に入れ替えます。
2. 残りの数字の中から最も小さい数字を見つけて、残りの数字の前と入れ替えます。
3. すべての数字が揃うまで手順 2 を繰り返します。
明らかに、N 個の数値を含む配列の場合、このプロセスには N-1 回 (0
最小の番号を見つけて前に入れ替える方法は次のとおりです。
まず、残りの番号の最初の番号 (シリアル番号は i) を次のように使用します。基数の場合、変数 k を使用してそのシリアル番号を記録し、後続の数値が順番に基数と比較されます。基数より小さい場合は、 k を使用してそのシリアル番号を記録します (注: この時点では交換しないでください)。すべての数字を底と比較したとき、k に格納されるのは最も小さい数字の通し番号であり、それ以降は前に入れ替えられます(今だけ入れ替えられます)。上記のプロセスでは、データは 1 回だけ交換されます。つまり、データは 1 回の旅行につき 1 回だけ交換されます。
例:
#include<stdio.h> #include<stdlib.h> #define N 8 void select_sort(int a[],int n); //选择排序实现 void select_sort(int a[],int n)//n为数组a的元素个数 { //进行N-1轮选择 for(int i=0; i<n-1; i++) { int min_index = i; //找出第i小的数所在的位置 for(int j=i+1; j<n; j++) { if(a[j] < a[min_index]) { min_index = j; } } //将第i小的数,放在第i个位置;如果刚好,就不用交换 if( i != min_index) { int temp = a[i]; a[i] = a[min_index]; a[min_index] = temp; } } } int main() { int num[N] = {89, 38, 11, 78, 96, 44, 19, 25}; select_sort(num, N); for(int i=0; i<N; i++) printf("%d ", num[i]); printf("\n"); system("pause"); return 0; }
レンダリング:
要約: 上記がこの記事の全内容です。皆さんの役に立ちます。誰もが役に立ちます
以上がC言語で選択ソートアルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。