冒泡、选择、插入排序
#include <stdio.h> //1.冒泡排序法 void BubbleSort(int arr[], int n) { int i, j, tmp; for(i = 0; i < n - 1; ++i) { for(j = 1; j < n - i; ++j) { if(arr[j - 1] > arr[j]) { //如果前一个大于后一个就进行交换 tmp = arr[j - 1]; arr[j - 1] = arr[j]; arr[j] = tmp; } } } } //2.选择排序 void SelectSort(int arr[], int n) { int i, j, min, tmp; for(i = 0; i < n - 1; ++i) { min = i; for(j = i + 1; j < n; ++j) { if(arr[j] < arr[min]) min = j;//如果发现比默认最小值还小的值,就记录下该数的下标 } if(min != i) { tmp = arr[i]; arr[i] = arr[min]; arr[min] = tmp; } } } //3.插入排序 void InsertSort(int arr[], int n) { int i, index, tmp; for(i = 1; i < n; ++i) { index = i;//记录当前的数值的下标 while(index && arr[index] < arr[index - 1])//如果它小于它的前一个数值 { //进行交换 tmp = arr[index]; arr[index] = arr[index - 1]; arr[index - 1] = tmp; --index; } } } int main() { int i, arr[] = {100, -2, 7, -5,10}; //数组所占的总字节数/每个元素的字节数==数组元素的个数 // BubbleSort(arr, sizeof(arr) / sizeof(arr[0])); // SelectSort(arr, sizeof(arr) / sizeof(arr[0])); InsertSort(arr, sizeof(arr) / sizeof(arr[0])); for(i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) printf("%3d", arr[i]); printf("\n"); return 0; }