在C語言中實現選擇排序的程式,詳細的程式碼如下:
#include <stdio.h> #include <stdbool.h> #define MAX 7 int intArray[MAX] = {4,6,3,2,1,9,7}; void printline(int count){ int i; for(i = 0;i <count-1;i++){ printf("="); } printf("=\n"); } void display(){ int i; printf("["); // navigate through all items for(i = 0;i<MAX;i++){ printf("%d ", intArray[i]); } printf("]\n"); } void selectionSort(){ int indexMin,i,j; // loop through all numbers for(i = 0; i < MAX-1; i++){ // set current element as minimum indexMin = i; // check the element to be minimum for(j = i+1;j<MAX;j++){ if(intArray[j] < intArray[indexMin]){ indexMin = j; } } if(indexMin != i){ printf("Items swapped: [ %d, %d ]\n" , intArray[i], intArray[indexMin]); // swap the numbers int temp = intArray[indexMin]; intArray[indexMin] = intArray[i]; intArray[i] = temp; } printf("Iteration %d#:",(i+1)); display(); } } main(){ printf("Input Array: "); display(); printline(50); selectionSort(); printf("Output Array: "); display(); printline(50); }
如果我們編譯並執行上述程式,那麼這將產生以下結果 -
Input Array: [4, 6, 3, 2, 1, 9, 7] ================================================== Items swapped: [ 4, 1 ] iteration 1#: [1, 6, 3, 2, 4, 9, 7] Items swapped: [ 6, 2 ] iteration 2#: [1, 2, 3, 6, 4, 9, 7] iteration 3#: [1, 2, 3, 6, 4, 9, 7] Items swapped: [ 6, 4 ] iteration 4#: [1, 2, 3, 4, 6, 9, 7] iteration 5#: [1, 2, 3, 4, 6, 9, 7] Items swapped: [ 9, 7 ] iteration 6#: [1, 2, 3, 4, 6, 7, 9] Output Array: [1, 2, 3, 4, 6, 7, 9] ==================================================