永发信息网

怎样用C语言对一串整行数从大到小排序

答案:3  悬赏:30  手机版
解决时间 2021-01-25 07:29
  • 提问者网友:爱了却不能说
  • 2021-01-24 09:59
怎样用C语言对一串整行数从大到小排序
最佳答案
  • 五星知识达人网友:不如潦草
  • 2021-01-24 10:56
#include <iostream>
using namespace std;
int main()
{int i,j,min,temp,a[11];<br> cout<<"enter data:"<<endl;<br> for (i=1;i<=10;i++)<br> {cout<<"a["<<i<<"]=";<br> cin>>a[i]; //输入10个数 <br> }
cout<<endl<<"The original numbers:"<<endl;;
for (i=1;i<=10;i++)
cout<<a[i]<<" "; // 输出这10个数
cout<<endl;;
for (i=1;i<=9;i++) //以下对10个数排序
{min=i;<br> for (j=i+1;j<=10;j++)<br> if (a[min]>a[j]) min=j;<br> temp=a[i]; //以下3行将a[i+1]~a[10]中最小者与a[i] 对换<br> a[i]=a[min];<br> a[min]=temp;<br> }
cout<<endl<<"The sorted numbers:"<<endl;
for (i=1;i<=10;i++) // 输出已排好序的10个数
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
全部回答
  • 1楼网友:荒野風
  • 2021-01-24 12:35

#include <iostream> using namespace std; int main()   {int i,j,min,temp,a[11];    cout<<"enter data:"<<endl;    for (i=1;i<=10;i++)    {cout<<"a["<<i<<"]=";     cin>>a[i];    //输入10个数    }    cout<<endl<<"the original numbers:"<<endl;;    for (i=1;i<=10;i++)     cout<<a[i]<<" ";    // 输出这10个数    cout<<endl;;    for (i=1;i<=9;i++)    //以下对10个数排序     {min=i;     for (j=i+1;j<=10;j++)     if (a[min]>a[j]) min=j;     temp=a[i];    //以下3行将a[i+1]~a[10]中最小者与a[i] 对换     a[i]=a[min];     a[min]=temp;     }    cout<<endl<<"the sorted numbers:"<<endl;    for (i=1;i<=10;i++)    // 输出已排好序的10个数     cout<<a[i]<<" ";    cout<<endl;    return 0;  } 

  • 2楼网友:由着我着迷
  • 2021-01-24 11:19
方法太多了,当然各种时间排序的时间复杂度和空间复杂度不同、稳定性也不同。最简单的我觉得就是冒泡排序了,也最形像。 void select_sort(int *x, int n) { int i, j, min, t; for (i=0; i<n-1; i++) { min = i; for (j=i+1; j<n; j++) { if (*(x+j) < *(x+min)) { min = j; } } if (min != i) { t = *(x+i); *(x+i) = *(x+min); *(x+min) = t; } } } void insert_sort(int *x, int n) { int i, j, t; for (i=1; i<n; i++) { t=*(x+i); for (j=i-1; j>=0 && t<*(x+j); j--) { *(x+j+1) = *(x+j); } *(x+j+1) = t; } } void bubble_sort(int *x, int n) { int j, k, h, t; for (h=n-1; h>0; h=k) { for (j=0, k=0; j<h; j++) { if (*(x+j) > *(x+j+1)) { t = *(x+j); *(x+j) = *(x+j+1); *(x+j+1) = t; k = j; } } } } void shell_sort(int *x, int n) { int h, j, k, t; for (h=n/2; h>0; h=h/2) { for (j=h; j<n; j++) { t = *(x+j); for (k=j-h; (k>=0 && t<*(x+k)); k-=h) { *(x+k+h) = *(x+k); } *(x+k+h) = t; } } } void quick_sort(int *x, int low, int high) { int i, j, t; if (low < high) { i = low; j = high; t = *(x+low); while (i<j) { while (i<j && *(x+j)>t) { j--; } if (i<j) { *(x+i) = *(x+j); i++; } while (i<j && *(x+i)<=t) { i++; } if (i<j) { *(x+j) = *(x+i); j--; } } *(x+i) = t; quick_sort(x,low,i-1); quick_sort(x,i+1,high); } } void sift(int *x, int n, int s) { int t, k, j; t = *(x+s); k = s; j = 2*k + 1; while (j<n) { if (j<n-1 && *(x+j) < *(x+j+1)) { j++; } if (t<*(x+j)) { *(x+k) = *(x+j); k = j; j = 2*k + 1; } else { break; } } *(x+k) = t; } void heap_sort(int *x, int n) { int i, k, t; int *p; for (i=n/2-1; i>=0; i--) { sift(x,n,i); } for (k=n-1; k>=1; k--) { t = *(x+0); *(x+0) = *(x+k); *(x+k) = t; sift(x,k,0); } } void main() { #define MAX 4 int *p, i, a[MAX]; p = a; printf("Input %d number for sorting :\n",MAX); for (i=0; i<MAX; i++) { scanf("%d",p++); } printf("\n"); p = a; select_sort(p,MAX); for (p=a, i=0; i<MAX; i++) { printf("%d ",*p++); } printf("\n"); system("pause"); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯