排序整合

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("
");
    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
", 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("
");
}
//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("
");
        return;
    }
    printf("%c", str[i]);
    reverse_Recursion(str, --i);
}
原文地址:https://www.cnblogs.com/quanxi/p/6700808.html