输入整型数组和排序标识,对其元素按照升序或降序进行排序
数据范围: ,元素大小满足
第一行输入数组元素个数第二行输入待排序的数组,每个数用空格隔开第三行输入一个整数0或1。0代表升序排序,1代表降序排序
输出排好序的数字
8 1 2 4 9 3 55 64 25 0
1 2 3 4 9 25 55 64
5 1 2 3 4 5 1
5 4 3 2 1
#include <stdio.h> #include <stdlib.h> #include <string.h> int compar(const void* a, const void* b) { return (*(int*)a) - (*(int*)b); } int compar2(const void* a, const void* b) { return (*(int*)b) - (*(int*)a); } int main() { int n=0,flag=0; int val[1000]={0}; scanf("%d", &n); for(int i=0; i<n; i++) { scanf("%d", &val[i]); } scanf("%d", &flag); if(flag == 0) qsort(val, n, sizeof(int), compar); else qsort(val, n, sizeof(int), compar2); for(int i=0; i<n; i++) printf("%d ", val[i]); }
#include "stdio.h" #include "string.h" void upper_bubble_sort(int arr[], int length)//升序冒泡排列:参数:数组和数据长度 { int a ,b ,temp; for(a = 0; a < length-1; a++) { for(b = 0; b < length-a-1; b++) { if(arr[b] > arr[b+1]) { temp = arr[b]; arr[b] = arr[b+1]; arr[b+1] = temp; } } } } int main() { int i,flag,c;//i:数组元素个数;flag:升降序排列标志位 int str[1000];//定义数组 scanf("%d", &i); for(c = 0; c < i; c++) { scanf("%d", &str[c]); } scanf("%d", &flag); upper_bubble_sort(str, i); if(flag == 0)//从小到大(升序)排列 { for(c = 0; c < i; c++) { printf("%d ", str[c]); } } else { for(c = i-1; c >= 0; c--) { printf("%d ", str[c]); } } }
#include <stdio.h>#include <string.h>int main() {int num;int val[1000];int flag;scanf("%d",&num);for(int i=0;i<num;i++){scanf("%d ",&val[i]);}scanf("%d",&flag);for(int i=0;i<num;i++){ //用个冒泡排序来实现升序降序for(int j=i+1;j<num;j++){if(val[i]>val[j]){int tmp=val[i];val[i]=val[j];val[j]=tmp;}}}if(flag==0){//是0的话,那刚好满足刚才冒泡排序的升序for(int i=0;i<num;i++){printf("%d ",val[i]);}}else{//是1的话,要将刚才的升序倒着输出,那就把得到的升序数组倒着输出for(int i=0;i<num;i++){printf("%d ",val[num-i-1]);}}return 0;}
# include <stdio.h> # include<stdlib.h> int cmp (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } int cmp1 (const void * a, const void * b) { return ( *(int*)b - *(int*)a); } int main() { int n, b, arr[100000]; scanf("%d",&n); for(int i = 0; i<n; i++)scanf("%d",&arr[i]); scanf("%d",&b); if(b) qsort(arr, n, sizeof(int), cmp1); else qsort(arr, n, sizeof(int), cmp); for(int i = 0; i<n; i++){ printf("%d ",arr[i]); } return 0; }
#include <stdlib.h> #include <stdio.h> int mycompare(void *a, void *b){ return(*(int *)a - *(int *)b); } int main(void) { int n = 0; scanf("%d",&n); int num[n];int i = 0; for(i=0;i<n;i++){ scanf("%d",&num[i]); } int jojo = 0; scanf("%d",&jojo); qsort(num,n,sizeof(int),mycompare); if(jojo == 0){ for(i=0; i<n;i++){ printf("%d ",num[i]); } } else{ for(i=n-1; i>-1;i--){ printf("%d ",num[i]); } } }
#include <stdio.h> void selection_sort(int a[], int len); void Inversion(int arr[], int len); int main() { int n; scanf("%d", &n); int value[n]; for (int i = 0; i < n; i++) scanf("%d", &value[i]); int flag; scanf("%d", &flag); selection_sort(value,n); if (flag == 0) for (int i = 0; i < n; i++) printf("%d ",value[i]); else if(flag == 1) for (int i = n - 1; i >= 0; i--) printf("%d ",value[i]); return 0; } /* 升序选择排列 * */ void selection_sort(int a[], int len) { int i,j,temp; for (i = 0 ; i < len - 1 ; i++) { int min = i; // 记录最小值,第一个元素默认最小 for (j = i + 1; j < len; j++) // 访问未排序的元素 { if (a[j] < a[min]) // 找到目前最小值 { min = j; // 记录最小值 } } if(min != i) { temp=a[min]; // 交换两个变量 a[min]=a[i]; a[i]=temp; } } }
#include<stdio.h> int main(){ int n; int flag; scanf("%d", &n); int num[n]; for(int i=0; i<n; i++){ scanf("%d", &num[i]); } scanf("%d", &flag); if(flag == 0){//small to big for(int i=0; i<n; i++){ for(int j=i+1; j<n; j++){ if(num[i] > num[j]){ int temp; temp = num[i]; num[i] = num[j]; num[j] = temp; } } } }else{ //big to small for(int i=0; i<n; i++){ for(int j=i+1; j<n; j++){ if(num[i] < num[j]){ int temp; temp = num[i]; num[i] = num[j]; num[j] = temp; } } } } printf("%d",num[0]); for(int i=1; i<n; i++){ printf(" %d", num[i]); } return 0; }
#include<stdio.h> int main() { int n = 0,flag,i = 0,j = 0,temp = 0; char str[1000]; scanf("%d\n",&n); for(i = 0;i <n; i++){ scanf("%d",&str[i]); } scanf("%d\n",&flag); for(i = 0;i < n-1; i++) { for(j = i+1;j <n;j++) { if(str[i] < str[j]) { temp = str[i]; str[i] = str[j]; str[j] = temp; } } } if(flag == 1) { for(i = 0;i < n; i++){ printf("%d ",str[i]); } } if(flag == 0) { for(i = 0;i<n;i++){ printf("%d ",str[n-i-1]); } } return 0; }
#include <stdio.h> #include <stdlib.h> int flag=0; int funcmp(const void *a,const void *b){ int x=0; int x1=*((int*)a),x2=*((int*)b); if(flag){ x=x2-x1; }else{ x=x1-x2; } return x; } void fun(int *arr,int n){ qsort(arr,n, sizeof(int),funcmp); for(int j=0;j<n;j++){ printf("%d ",arr[j]); } printf("\n"); } int main(){ int n; while(scanf("%d",&n)!=EOF){ int arr[n]; for(int i=0;i<n;i++){ scanf("%d",&arr[i]); if(getchar()=='\n') break; } scanf("%d",&flag); fun(arr,n); } return 0; }