排序整合
C语言实现:
冒泡排序:
#include <stdio.h> void swap(int num[], int i, int j); void Bubble(int num[], int n, int ascending); //C没得bool int main() { //int i, numbers[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; int i, numbers[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; Bubble(numbers, 10, 0); for (i = 0; i < 10; i++) { printf("%d ", numbers[i]); } printf("\n"); return 0; } void Bubble(int num[], int n, int ascending) { int i, j; for (i = 0; i < n; i++) //i在这里代表已经冒过泡的数组元素个数 { for (j = 1; j < n - i; j++) { if (ascending) { if (num[j - 1] > num[j]) swap(num, j - 1, j); } else { if (num[j - 1] < num[j]) swap(num, j - 1, j); } } } } void swap(int num[], int i, int j) { int temp = num[i]; num[i] = num[j]; num[j] = temp; }
字符串反序:
//main scanf("%s", str); reverse_NonRecursion(str, n); /*str = reverse_NonRecursion(str, n); printf("%s\n", str);*/ reverse_Recursion(str, n - 1); //logic char *swap(char *str, int lowIndex, int highIndex) { char temp = str[lowIndex]; str[lowIndex] = str[highIndex]; str[highIndex] = temp; return str; } //非递归 void reverse_NonRecursion(char *str, int n) { int i; for (i = n - 1; i >= 0; i--) { printf("%c", str[i]); } printf("\n"); } //char *reverse_NonRecursion(char *str, int n) //{ // //从中间分开,两头对换就行 // int i; // for (i = 0; i <= n / 2; i++) // { // str = swap(str, i, n - i - 1); // } // return str; //} //递归 void reverse_Recursion(char *str, int i) { if (i < 0) { printf("\n"); return; } printf("%c", str[i]); reverse_Recursion(str, --i); }