c语言数组的排序 C语言数组排列怎么做?

\u6c42C\u8bed\u8a00\u5c06\u6570\u7ec4\u5143\u7d20\u5927\u5c0f\u6392\u5e8f\uff01\uff01

C\u8bed\u8a00\u5c06\u6570\u7ec4\u5143\u7d20\u5927\u5c0f\u6392\u5e8f\u65b9\u6cd5\uff1a
\u4ee5\u4e0b\u4f7f\u7528\u7684\u662f\u5192\u6ce1\u6392\u5e8f\u6cd5\u5b9e\u7ebf\u6570\u7ec4\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\u3002
\u601d\u60f3\uff1a\u6bcf\u6b21\u76f8\u90bb\u4e24\u4e2a\u6570\u6bd4\u8f83\uff0c\u82e5\u5347\u5e8f\uff0c\u5219\u5c06\u5927\u7684\u6570\u653e\u5230\u540e\u9762\uff0c\u4e00\u6b21\u5faa\u73af\u8fc7\u540e\uff0c\u5c31\u4f1a\u5c06\u6700\u5927\u7684\u6570\u653e\u5728\u6700\u540e\u3002
10\u30012\u30013\u30014\u30015\u30016\u30019\u30018\u30017\u30011\u662f\u8f93\u5165\u7684\u5f85\u6392\u5e8f\u7684\u6570\u5217\uff0c\u7ecf\u8fc7\u7b2c\u4e00\u6b21\u6392\u5e8f\uff0c\u5c06\u6700\u5927\u7684,10\u653e\u5728\u6700\u540e\uff0c\u7b2c\u4e8c\u6b21\u6392\u5e8f\uff0c\u5c06\u5269\u4e0b\u76842\u30013\u30014\u30015\u30016\u30019\u30018\u30017\u30011\u8fdb\u884c\u5192\u6ce1\uff0c\u5c06\u5f53\u524d\u6700\u5927\u76849\u653e\u5728\u5012\u6570\u7b2c\u4e8c\u7684\u4f4d\u7f6e\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002
\u4ee5\u4e0b\u662f\u5177\u4f53\u4ee3\u7801\uff1a
#include
int main(){
int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};
int i, j, temp, isSorted;
//\u4f18\u5316\u7b97\u6cd5\uff1a\u6700\u591a\u8fdb\u884c n-1 \u8f6e\u6bd4\u8f83
for(i=0; i<10-1; i++){
isSorted = 1; //\u5047\u8bbe\u5269\u4e0b\u7684\u5143\u7d20\u5df2\u7ecf\u6392\u5e8f\u597d\u4e86
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;
isSorted = 0; //\u4e00\u65e6\u9700\u8981\u4ea4\u6362\u6570\u7ec4\u5143\u7d20\uff0c\u5c31\u8bf4\u660e\u5269\u4e0b\u7684\u5143\u7d20\u6ca1\u6709\u6392\u5e8f\u597d
}
}
if(isSorted) break; //\u5982\u679c\u6ca1\u6709\u53d1\u751f\u4ea4\u6362\uff0c\u8bf4\u660e\u5269\u4e0b\u7684\u5143\u7d20\u5df2\u7ecf\u6392\u5e8f\u597d\u4e86
}
for(i=0; i<10; i++){
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}

\u6269\u5c55\u8d44\u6599\uff1a
\u5176\u4ed6\u5c06\u6570\u7ec4\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\u7684\u7b97\u6cd5
\u4ee5\u4e0b\u4f7f\u7528\u7684\u662f\u9009\u62e9\u6392\u5e8f\u6cd5\u5b9e\u73b0\u6570\u7ec4\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\u3002
\u601d\u60f3\uff1a\u4ece\u7b2c\u4e00\u4e2a\u6570\u5f00\u59cb\uff0c\u6bcf\u6b21\u548c\u540e\u9762\u5269\u4f59\u7684\u6570\u8fdb\u884c\u6bd4\u8f83\uff0c\u82e5\u5347\u5e8f\uff0c\u5219\u5982\u679c\u540e\u8fb9\u7684\u6570\u6bd4\u5f53\u524d\u6570\u5b57\u5c0f\uff0c\u8fdb\u884c\u4ea4\u6362\uff0c\u548c\u540e\u9762\u7684\u6240\u6709\u7684\u6570\u6bd4\u8f83\u3001\u4ea4\u6362\u540e\uff0c\u5c31\u4f1a\u5c06\u5f53\u524d\u7684\u6700\u5c0f\u503c\u653e\u5728\u5f53\u524d\u7684\u4f4d\u7f6e
\u8f93\u5165\u7684\u5e8f\u5217\u4e3a10\u30012\u30013\u30014\u30015\u30016\u30019\u30018\u30017\u30011\u8fdb\u884c\u4e00\u6b21\u6392\u5e8f\u540e\u5c06\u6700\u5c0f\u7684\u6570\u653e\u5728\u4e86\u7b2c\u4e00\u4f4d(a[0]\u4e0e\u5b83\u540e\u9762\u7684\u6240\u6709\u6570\u8fdb\u884c\u6bd4\u8f83\uff0c\u82e5a[0]\u6bd4\u540e\u9762\u7684\u6570\u5927\uff0c\u8fdb\u884c\u4ea4\u6362)\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002
\u4ee5\u4e0b\u662f\u5177\u4f53\u4ee3\u7801\uff1a
#include
int main(void){
int a[1001];
int n,i,j,t;
scanf("%d",&n);//n\u4e3a\u8981\u6392\u5e8f\u7684\u6570\u7684\u4e2a\u6570
//\u8f93\u5165\u9700\u8981\u6392\u5e8f\u7684\u6570
for(i=0;i<n;++i)
scanf("%d",a+i);
//\u63a5\u4e0b\u6765\u8fdb\u884c\u6392\u5e8f
for(i=0;i<n-1;++i)//\u56e0\u4e3a\u6bcf\u6b21\u9700\u8981\u548ca[i]\u540e\u9762\u7684\u6570\u8fdb\u884c\u6bd4\u8f83,\u6240\u4ee5\u5230a[n-2](\u5012\u6570\u7b2c2\u4e2a\u5143\u7d20)\u5c31\u884c
{
for(j=i+1;j<n;++j)//j\u4ecei\u540e\u4e00\u4e2a\u5f00\u59cb,a[i]\u4e0ea[j]\u8fdb\u884c\u6bd4\u8f83
{
if(a[i]>a[j])//a[i]\u4e3a\u5f53\u524d\u503c,\u82e5\u662f\u6bd4\u540e\u9762\u7684a[j]\u5927,\u8fdb\u884c\u4ea4\u6362
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}//\u6bcf\u6392\u5e8f\u4e00\u6b21,\u5c31\u4f1a\u5c06a[i](\u5305\u62eca[i])\u4e4b\u540e\u7684\u6700\u5c0f\u503c\u653e\u5728a[i]\u7684\u4f4d\u7f6e
for(j=0;j<n;++j)
printf("%-5d",a[j]);
printf("\n\n");
}
return 0;
}

\u5bf9n\u4e2a\u6570\u6392\u5e8f\uff0c\u5148\u8f93\u5165n\uff0c\u518d\u8f93\u5165n\u4e2a\u6570\u3002
\u9009\u62e9\u6392\u5e8f
#include
int main()
{
int a[100];
int i,j,t,p,n;
while (~scanf("%d",&n))
{
for (i=0;i<n;i++)
scanf("%d",&a[i]);

for (i=0;i<n-1;i++)
{
p=i;
for (j=i+1;j<n;j++)
if (a[p]>a[j])
p=j;

if (p!=j)
{
t=a[p];a[p]=a[i];a[i]=t;
}
}
for (i=0;i<n;i++)
if (i!=n-1)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);

}

return 0;
}


\u5192\u6ce1\u6392\u5e8f
#include
int main()
{
int i,j,t,n;int a[1000];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(j=0;j<(n-1);j++)
for(i=0;i<(n-1)-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=0;i<n;i++)
{
if (i!=n-1)
printf("%d ",a[i]);
else
printf("%d\n",a[i]);
}

return 0;
}

可以采用冒泡排序的方法。以下给题主一个对既定数组进行升序、降序排序的代码

#include <stdio.h>
#include <time.h>

#define elemType int /*元素类型*/
#define LEN 100 /*数组长度上限*/

#define ASC 0 /*升序*/
#define DESC 1 /*降序*/

/*冒泡排序*/
/*参数说明:*/
/*elemType arr[]:排序目标数组*/
/*int len:元素个数*/
/*int order:排序方式;升序(由小到大):ASC;降序(由大到小):DESC*/
void bubbleSort (elemType arr[], int len, int order) {
int i, j, temp;

for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++) {
if (order == ASC) { /*升序*/
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
else if (order == DESC) { /*降序*/
if (arr[j] < arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}

/*打印数组*/
void printArr (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%d",arr[i]);
putchar ('
');
}

int main (void) {
elemType arr[LEN] = {3,5,1,7,2,9,6,8,10,4};
int len;

len = 10;

puts ("初始数组:");
printArr (arr,len);
putchar ('
');

puts ("升序排列:");
bubbleSort (arr, len, ASC); /*升序冒泡排序*/ 
printArr (arr,len);
putchar ('
');

puts ("降序排列:");
bubbleSort (arr, len, DESC); /*降序冒泡排序*/ 
printArr (arr,len);
putchar ('
');

getch (); /*屏幕暂留*/ 
return 0;
}

运行结果



百度 C语言 冒泡排序法

~
~
~
~

选择排序的原理是,每次从待排序数字中挑选出最大(最小)数字,放在有序序列的末尾。实际操作中,只需要在这个数组中将挑出来的数字与前面的数字交换即可。例如:4
1 5
2 3找到最小的1,1和4交换1
4 5
2
3找到最小的2,2和4交换1
2
5
4
3找到最小的3,3和5交换1
2
3
4
5找到最小的4,4和4交换(不交换也可)可见,选择排序需要一个双重循环来完成,因此它的复杂度是O(n^2)在数据量比较大时,不建议使用这种排序方法。 其他排序方法有很多,你甚至可以自己根据不同数据规模设计不同的排序方法。比较常见的有冒泡排序,插入排序(这两种和选择排序一样,都是O(n^2)),二分法插入排序(降低了一些复杂度,但是涉及到大规模数据移动,效率依然不高),快速排序(平均复杂度O(nlogn),但是不稳定,最坏情况O(n^2)),随机化快速排序(很大程度上避免了最坏情况的出现),堆排序(O(nlogn),编程复杂度高),基数排序(理论复杂度O(n),实际要比这个慢。甚至能应付字符串排序,但是编程复杂度高,牵扯到其他数据结构),桶排序(O(n),编程简单,效率高,但是应付的数据范围不能太大,受到内存大小的限制)。 平时比较常用的就是快速排序,程序简单,效率也可以接受。 这是我了解的一些东西,希望对你有帮助。

  • C璇█:鍐掓场鎺掑簭娉曞皢鏁扮粍涓10涓厓绱犱粠灏忓埌澶ф帓搴,骞舵壘鍑烘渶灏忓?_鐧惧害...
    绛旓細include<stdio.h> int main(){ int a[11],min=0,t;for(int i=0;i<10;i++)scanf("%d",&a[i]);min=a[0];for(int i=0;i<10;i++)if(a[i]<min)//姹傛渶灏忓 min=a[i];for(int i=0;i<10;i++)//鍐掓场鎺掑簭 for(int j=0;j<9-i;j++)if(a[j]>a[j+1]){ t=a...
  • C璇█:鐢ㄩ夋嫨鎺掑簭娉曞涓涓鏁扮粍閲岀殑鏁杩涜鎺掑簭,浠庡皬鍒板ぇ,瑕佹眰閫夊嚭灏忕殑...
    绛旓細杩欐牱锛歩nt *a = (int *)malloc(sizeof(int) * n); //鍔ㄦ佸垎閰鏁扮粍绌洪棿 锛屾湁鍑犱釜鍏冪礌锛宯灏辨槸鍑犮俧or(i=0; i<n; i++){ a[i]=褰曞叆鏁板;} Sort(a, n);for(j=0; j<n; j++){ printf("%d",a[ij);//杈撳嚭鐨勫唴瀹瑰氨鏄鎺掑簭濂戒簡鐨 }//涓嬮潰鏂规硶鏄敤鏉ユ帓搴忕殑 void Sort(int *a...
  • 姹C璇█灏鏁扮粍鍏冪礌澶у皬鎺掑簭!!
    绛旓細int main(){ int numbers[10] = { 10,2,3,4,5,6,9,8,7,1 };int a,b, text, hello;for(a=0; a<10-1; a=a+1) { //鍦ㄨ繖閲岃繘琛屾瘮杈冪殑寮濮嬬殑浠g爜 hello = 1; //鍋囧鍓╀笅鐨勫厓绱犲凡缁忚鎺掑簭濂戒簡锛岀劧鍚庢帴鐫杩涜涓嬮潰鐨勬瘮杈 for(b=0; b<10-1-i; b=b+1){ if(numbe...
  • C璇█缂栧啓涓涓帓搴忓嚱鏁(瀵逛竴缁鏁扮粍鎺掑簭)骞跺湪涓诲嚱鏁颁腑璋冪敤
    绛旓細浠ヤ笅鏄竴涓娇鐢C璇█缂栧啓涓缁鏁扮粍鎺掑簭鍑芥暟骞跺湪涓诲嚱鏁颁腑璋冪敤鐨勭ず渚嬩唬鐮侊紝閲囩敤鐨勬槸浠庡皬鍒板ぇ鎺掑簭鐨勬柟寮忥紝鍙互鏍规嵁闇瑕佽繘琛屼慨鏀癸細```c include <stdio.h> // 鎺掑簭鍑芥暟锛屽弬鏁颁负寰鎺掑簭鏁扮粍鍜屾暟缁勯暱搴 void sort(int arr[], int len) { int i, j, tmp;// 鍐掓场鎺掑簭 for (i = 0; i < len - 1...
  • 鐢C璇█瀵逛竴缁鏁扮粍鎺掑簭,骞惰緭鍑哄凡鎺掑ソ鍏冪礌鐨勫師鏉ヤ綅缃
    绛旓細i++) { for(j=0;j<5;j++) { if(b[i]==a[j]) p[i]=&a[j]; } } for(i=0;i<5;i++) c[i]=p[i]-&a[0]+1; printf("鍘熸潵鐨勪綅缃鏁扮粍c[5]={%d,%d,%d,%d,
  • 鐢C璇█瀵逛竴缁鏁扮粍鎺掑簭,骞惰緭鍑哄師鏉ョ殑浣嶇疆
    绛旓細h>#define N 5int main(){ int a[N],b[N],c[N],i,j,temp; for(i=0;i<N;i++){//杈撳叆鏁扮粍锛屽苟鐢╞淇濆瓨鏁扮粍a鐨勫 scanf("%d",&a[i]); b[i]=a[i]; } for(i=0;i<N-1;i++)//瀵筧浠庡ぇ鍒板皬鍐掓场鎺掑簭 for(j=0;j<N-i-1;j++) if(a[j...
  • c璇█缂栫▼: 灏嗕竴缁勬暟鎸変粠澶у埌灏忕殑椤哄簭鎺掑簭
    绛旓細include <stdio.h> main(){ int x;printf("璇疯緭鍏ヨ鎺掑簭鏁板瓧涓暟:");scanf("%d",&x);int i,j,k,a,b,num[x];printf("杈撳叆鏁版嵁:");for(i=0;i<x;i++)scanf("%d",&num[i]);for(j=0;j<x;j++){ for(k=j+1;k<x;k++)if(num[k]>num[j]){ a=num[j];num[j]=num...
  • 缂栧啓C璇█绋嬪簭,鎶婁竴涓鏁扮粍鎸変粠灏忓埌澶х殑娆″簭鎺掑垪璧锋潵
    绛旓細婧愮▼搴忎互鍙婄畻娉曟敞閲婂涓嬶細define _CRT_SECURE_NO_WARNINGS//VS缂栬瘧鐜闇瑕佽繘琛屽畯瀹氫箟锛孷C6.0鍙拷鐣 include<stdio.h>//杈撳叆杈撳嚭澶存枃浠 int main(){ int number[10], New_number[10];//瀹氫箟鏁扮粍鐨鏁版嵁绫诲瀷涓烘暣鍨 int i, j, m, n, k;//瀹氫箟鍙橀噺鐨勬暟鎹被鍨嬩负鏁村瀷 printf("input 10 <int> ...
  • C璇█鏁扮粍A鐢ㄩ夋嫨鎺掑簭
    绛旓細蹇熸硶瀹氫箟浜嗕笁涓弬鏁帮紝锛堟暟缁勯鍦板潃*a,瑕鎺掑簭鏁扮粍璧峰鍏冪礌涓嬫爣i,瑕佹帓搴忔暟缁勭粨鏉熷厓绱犱笅鏍噅). 瀹冮鍏堥変竴涓暟缁勫厓绱狅紙涓鑸负a[(i +j)/2],鍗充腑闂村厓绱狅級浣滀负鍙傜収锛屾妸姣斿畠灏 鐨勫厓绱犳斁鍒板畠鐨勫乏杈癸紝姣斿畠澶х殑鏀惧湪鍙宠竟銆傜劧鍚庤繍鐢ㄩ掑綊锛屽湪灏嗗畠宸︼紝鍙充袱涓瓙鏁扮粍鎺掑簭锛屾渶鍚庡畬鎴愭暣涓鏁扮粍鐨勬帓搴銆備笅闈㈠垎鏋愬叾...
  • C璇█鏁扮粍涓冧釜鏁板崌搴忔帓鍒楀拰闄嶅簭鎺掑垪鎬庝箞缂栫▼?
    绛旓細5銆佺粰瀛楃涓杩涜鎺掑簭銆6銆侀摼鎺ュ瓧绗︿覆骞惰緭鍑猴細if (a[i] == '\0') /*鍒ゆ柇a涓瓧绗︽槸鍚﹀叏閮藉鍒跺埌c涓*/ p = b + j; /*p鎸囧悜鏁扮粍b涓湭澶嶅埗鍒癱鐨勪綅缃*/銆7銆佽緭鍑烘渶鍚庣殑缁撴灉銆
  • 扩展阅读:c语言数组的下标范围 ... c语言数组按升序排序 ... c语言从小到大排序编程 ... c语言冒泡排序法代码 ... c语言快速排序函数 ... c语言对10个数排序 ... c语言冒泡排序10个数 ... c语言排序程序怎么写 ... c语言数组比较大小排序 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网