数组的题,可以看一下吗大一新生

创建一个元素个数为 10 的整型数组,从键盘随机输入数组的各元素,编写程序实现数
组元素从小到大的排序,并输出排序结果。若改为从大到小排序,该如何编写程序?

简单,同样排序,从后面开始输出就行了


从大到小
void bubble_sort(unsigned int a[], int n)
{
    int i ,j, temp;
    for(i = 0; i < n - 1; i++)
    {
          for(j = 0; j <n - 1 - i; j++)
         {
            if(a[j] < a[j+1])
            {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
         }
    }
}

从小到大
void bubble_sort2(unsigned int a[], int n)
{
    int i ,j, temp;
    for(i = 0; i < n - 1; i++)
    {
          for(j = 0; j <n - 1 - i; j++)
         {
            if(a[j] > a[j+1])
            {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
         }
    }
}

其实就改一个判断就可以

#include <stdio.h>

void sort(int arr[10], int n);

int main(void) {
    int arr[10];
    for (int i = 0; i < 10; ++i) {  //输入
        scanf("%d", &arr[i]);
    }
    sort(arr, 10);                  //排序
    for (int i = 0; i < 10; ++i) {  //打印
        printf("%d ", arr[i]);
    }
    return 0;
}

void sort(int arr[10], int n) {
    for (int i = 0; i < n - 1; ++i) {
        for (int j = 0; j < n - i - 1; ++j) {
            if (arr[j] < arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
#include <stdio.h>
int main(){
    int nums[10] ;
     int i, j, temp;
    for(i=0; i<10; i++){
    scanf("%d",&nums[i]);
    }
   

    /**从小到大 
    for(i=0; i<10-1; i++){
        //每一轮比较前 n-1-i 个, 
        for(j=0; j<10-1-i; j++){
            if(nums[j] > nums[j+1]){
                temp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = temp;
            }
        }
    }**/
    
    //从大到小 
     for(i=0; i<10-1; i++){
        //每一轮比较前 n-1-i 个, 
        for(j=0; j<10-1-i; j++){
            if(nums[j] < nums[j+1]){
                temp = nums[j];
                nums[j] = nums[j+1];
                nums[j+1] = temp;
            }
        }
    }
   
    //输出排序后的数组
    for(i=0; i<10; i++){
        printf("%d ", nums[i]);
    }
    printf("\n");
   
    return 0;
}

从小到大

#include <stdio.h>

int
main(int argc, char *argv[]) {

    int arr[10];
    int change;

    for (int i = 0; i < 10; i++) {
        scanf("%d", &arr[i]);
    }

    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 9-i; j++) {
            if (arr[j] <= arr[j+1]) {
                change = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = change;
            }
        }
        printf("%5d", arr[9-i]);
    }

    return 0;
}

从大到小

#include <stdio.h>

int
main(int argc, char *argv[]) {

    int arr[10];
    int change;

    for (int i = 0; i < 10; i++) {
        scanf("%d", &arr[i]);
    }
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 9-i; j++) {
            if (arr[j] >= arr[j+1]) {
                change = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = change;
            }
        }
        printf("%5d", arr[9-i]);
    }

    return 0;
}