C语言选择排序
初始版:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> #define N 10 void quick_sort(int arr[], int start, int end); int partition(int arr[], int low, int high); void select_sort(int arr[],int n); int main() { int i = 0; int arr[N] = {1,33,5,2,5,66,2,7,7,85}; for (int i = 0; i < 10; i++) { printf("%d\t", arr[i]); } printf("\n"); int n = sizeof(arr) / sizeof(arr[0]); select_sort(arr,n); for (int i = 0; i < 10; i++) { printf("%d\t", arr[i]); } printf("\n"); return 0; } //选择排序 void select_sort(int arr[],int n) { int min=0,i=0,j=0,index=0; bool status = false; for (int i = 0; i < n-1;i++) { if (arr[i]<arr[i+1]) { min = arr[i]; } else { min = arr[i + 1]; status = true; } for (int j = i+1;j < n; j++) { if(arr[j] < min){ min = arr[j]; status = true; index = j; } } if (status) { arr[index] = arr[i]; arr[i] = min; } status = 0; } }
改进版
//选择排序 /* 这里改进的思想是在循环比较的过程中找到最小值的位置,然后退出里面的一层循环后再进行数据交换 */ void select_sort(int arr[],int n) { int minindex = 0, i = 0, j = 0; for (int i = 0; i < n-1;i++) { minindex = i; for (int j = i+1;j < n; j++) { if (arr[j]<arr[minindex]) { minindex = j; } } if (minindex!=i) { int temp = arr[minindex]; arr[minindex] = arr[i]; arr[i] = temp; } } }

浙公网安备 33010602011771号