关于C语言用选择法对数组中10个整数按由小到大排序 关于C语言,用选择法对数组中10个整数按由小到大排序

C\u8bed\u8a00\uff0c\u7528\u9009\u62e9\u6cd5\u5bf9\u6570\u7ec4\u4e2d10\u4e2a\u6574\u6570\u6309\u7531\u5c0f\u5230\u5927\u6392\u5e8f?\u6c42\u89e3\u91ca\uff01\uff01\uff01

\u9009\u62e9\u6392\u5e8f\u7684\u601d\u60f3\u662f\uff1a\u6bcf\u4e00\u8d9f\u7684\u6392\u5e8f\u8fc7\u7a0b\u90fd\u662f\u5728\u5f53\u524d\u4f4d\u7f6e\u540e\u9762\u5269\u4e0b\u7684\u5f85\u6392\u5e8f\u5bf9\u8c61\u4e2d\u9009\u51fa\u503c\u6700\u5c0f\u7684\u90a3\u4e2a\uff0c\u7136\u540e\u653e\u5230\u5f53\u524d\u4f4d\u7f6e\u4e0a\u3002
\u8be5\u7a0b\u5e8f\u4e2dk\u7684\u5b9a\u4e49\u4e3b\u8981\u662f\u4e3a\u4e86\u5b58\u653e\u6570\u7ec4\u4e2d\u6700\u5c0f\u6570\u7684\u4f4d\u7f6e\u3002\u7136\u540e\u901a\u8fc7t=array[k];array[k]=array[i];array[i]=t;\u8fd9\u4e09\u6761\u8bed\u53e5\uff0c\u518d\u628a\u8fd9\u6570\u7ec4\u4e2d\u6700\u5c0f\u7684\u6570\u5b57\u653e\u5230\u524d\u9762\u3002\u6ce8\u610fC\u8bed\u8a00\u5f53\u4e2d\u7684\u201c=\u201d\u4e0d\u662f\u7b49\u4e8e\uff0c\u53ea\u662f\u4e00\u79cd\u8d4b\u503c\u8fd0\u7b97\u3002\u5176\u4e2dif(array[j]<array[k]) k=j;\u8fd9\u6761\u8bed\u53e5\u7528\u6765\u6bd4\u8f83\u5f53\u524d\u4f4d\u7f6e\u7684\u503c\u548c\u521d\u59cb\u503c\uff08\u5373array[0]\u7684\u503c\uff09\u7684\u5927\u5c0f\u7684\u3002\u6ce8\u610f\u4e0a\u8ff0\u8bed\u53e5\u4e2d\u7b2c\u4e8c\u4e2afor\u5faa\u73af\u7684\u5faa\u73af\u4f53\u8bed\u53e5\u53ea\u6709\u4e00\u6761\uff0c\u5373\uff1aif(array[j]<array[k]) k=j;\u81ea\u5df1\u8bd5\u7740\u5206\u6790\u4e00\u4e0b\u5c31\u660e\u767d\u4e86\u3002

d=k=i; \u4e0d\u80fd\u8fd9\u6837\u5199\uff0c\u8981\u5206\u5f00\u6765\uff1a
k=i;
d=i;

程序是好的。正常运行:

#include<stdio.h>

int main()

{

void sort(int arry[],int n);

int a[10],i;

printf("enter array:
");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

sort(a,10);

printf("the sorted array:
");

for(i=0;i<10;i++)

printf("%d ",a[i]);

printf("
");

return 0;

}


void sort (int array[],int n)

{

int i,j,k,t;

for(i=0;i<n-1;i++)

{

k=i;

for(j=i+1;j<n;j++)

if(array[j]<array[k])

k=j;

t=array[k];array[k]=array[i];array[i]=t;

}

}



#include<stdio.h>
int main()
{
void sort(int arry[],int n);
int a[10],i;
printf("enter array:
");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("the sorted array:
");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("
");
return 0;
}


void sort (int array[],int n)
{
int i,j,k,t,d;
for(i=0;i<n-1;i++)
{
d=k=i;


for(j=i+1;j<n;j++)

if(array[j]<array[k])

d=j;


t=array[k];array[k]=array[i];array[i]=t;
}
}

程序23和30你这样子写是不对的你想想程序第28行if(array[j]<array[k]) 这里会在某个时刻拿k作为下标的哦 (在26行每次的循环过程中是需要k的值在改变的而你把j赋值给了d自然不行)这个跟你讲不清楚 总之了解程序的步骤吧  一步步照着程序走一遍 

这个很重要相信我  因为人思考问题有时候一下想好几步  多数都是在这好几步中出错了。(你要做到于程序同步啊)哈哈



如程序所给出的sort函数,k=i是为了设置每次排序的开始,是参照点;j=k呢,就是将此轮比较中最小的个数赋值给数组中的第i个,完成此次选择中最小数的选择。第一次排序从数组中第一个数开始,通过比较,确定最小的数,并通过t=array[k];array[k]=array[i];array[i]=t;
,完成赋值给a[o].以此类推,第二次由数组中第二个数组元素开始,也就是a[1]开始,比较数组中以下元素的大小,选择出余下元素中最小的,赋值给a[1],完成此次选择。以此类推,得到一个完整有序的数组。其中,比较次数分别为n-1,n-2,n-3、、、总次数为(n-1)n/2。你仔细想一下就会出来的。。。:-D

从第i个数开始,比较后面的数,把最小的和第i个交换
当i=0时,交换完成,a[i]就是从第0个开始到最后一个中最小的那个
当i=1时,交换完成,a[i]就是从第1个开始到最后一个中最小的那个
.......
k是最小数的下标,然后a[k]和a[i]的数字交换,a[i]就是最小的了

快排、二叉树 这两个比较难,还可以使用指针定位。

-itjob

  • C璇█,鐢ㄩ夋嫨娉曞鏁扮粍涓10涓暣鏁版寜鐢卞皬鍒板ぇ鎺掑簭
    绛旓細k=j;灏变繚璇佺k涓厓绱犳槸褰撳墠涓杞瘮杈冧腑鐩墠鏈灏忕殑锛屾瘮杈冨畬鍚庡氨鏄繖涓杞腑鏈灏忕殑锛屾妸瀹冮氳繃涓嬮潰涓庣i涓厓绱犱氦鎹㈣揪鍒颁粠灏忓埌澶ф帓搴忋閫夋嫨娉涓庡啋娉℃硶宸笉澶氾紝鍐掓场鏄瘡娆¢兘浜ゆ崲锛岃岄夋嫨娉曟槸鍙笌鏈灏忕殑浜ゆ崲锛岃繖鏈灏忕殑灏辨槸鐢╧鏉ヨ褰曠殑銆俴=j;鏀逛负array[k]=array[j]鑲畾涓嶈鍟婏紝array[k]=array[j...
  • 鍦C璇█涓,濡備綍鐢ㄥ嚱鏁板疄鐜,鐢ㄩ夋嫨娉曞10涓暟杩涜鎺掑簭
    绛旓細//閫夋嫨 void sort1(int *a,int n){ for(int i=0;i<n-1;i++) for(int j=i;j<n;j++) if(a[i]>a[j]) sp(a[i],a[j]);}//鍐掓场 void sort2(int *a,int n){ for(int i=1;i<n-1;i++) for(int j=0;j<n-i;j++) if(a[j]>a[j+1])...
  • 缂栧啓绋嬪簭,鐢ㄩ夋嫨娉曞10涓暣鏁版寜浠庡皬鍒板ぇ椤哄簭鎺掑簭
    绛旓細閲囩撼鐜:59% 鏉ヨ嚜:鑺濋夯鍥 鎿呴暱: C/C++ 缂栫▼璇█ 鏁欒偛/绉戝 濞变箰浼戦棽 鐢佃剳/缃戠粶 涓烘偍鎺ㄨ崘: 缂栧啓绋嬪簭杈撳叆涓涓暣鏁 缂栧啓绋嬪簭鎶560鍒嗛挓 缂栧啓绋嬪簭灏嗘暣鏁版寜鐩稿弽 鏁存暟鏂囦欢 缂栧啓绋嬪簭 姹備袱鏁存暟鍜 閫夋嫨娉曟槸浠涔? 閫夋嫨娉曞10涓暣鏁版帓搴 閫夋嫨鎺掑簭娉曚妇渚 绠鍗曠殑閫夋嫨娉曟帓搴 閫夋嫨娉曟帓搴忎袱绉嶆柟娉 鍏朵粬...
  • 鐢ㄩ夋嫨娉曞10涓暣鏁鐨鎺掑簭鏄
    绛旓細鐢ㄩ夋嫨娉曞10涓暣鏁伴掑鎺掑簭銆10涓暣鏁扮敤scanf鍑芥暟杈撳叆 閫夋嫨娉曪細鍋囪闆嗗悎A鏈塶涓厓绱狅紝鎸変互涓嬬畻娉曞畬鎴愰掑鎺掑簭锛氾紙1锛塡x05浠ヤ竴涓厓绱犱负鍩哄噯锛屼粠涓涓柟鍚戝紑濮嬫壂鎻忥紝姣斿浠[0]涓哄熀鍑嗭紝浠庡乏鑷冲彸鎵弿锛涳紙2锛塡x05鐢ˋ[0]鍙宠竟鐨凙[1]-A[n-1]涓嶢[0]姣旇緝锛屾壘鍑烘渶灏忕殑鍏冪礌锛屽皢鍏朵笌A[0]浜ゆ崲锛涳紙3...
  • C璇█绋嬪簭 鐢ㄩ夋嫨娉曞鍗涓暟鎺掑簭
    绛旓細include <stdio.h> int main(){int i,j,min,temp,a[11];printf("enter data:\n");for (i=1;i<=10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);} printf("\n");printf("The orginal numbers:\n");for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");for...
  • 鍏充簬C璇█,鐢ㄩ夋嫨娉曞鏁扮粍涓10涓暣鏁版寜鐢卞皬鍒板ぇ鎺掑簭
    绛旓細d=k=i; 涓嶈兘杩欐牱鍐欙紝瑕佸垎寮鏉ワ細k=i;d=i;
  • C璇█鐢ㄩ夋嫨娉曞10涓暣鏁版寜浠庡ぇ鍒板皬鎺掑簭銆10涓暣鏁扮敤scanf鍑芥暟...
    绛旓細include//鏍囧噯杈撳叆杈撳嚭鍑芥暟璋冪敤闇瑕佹澶存枃浠躲佸氨鏄偅涓猵rintf鍜宻canf鍑芥暟瑕佺敤鐨刓x0d\x0avoid main()//涓诲嚱鏁癨x0d\x0a{int i,j,min,temp,a[10];\x0d\x0aprintf("璇疯緭鍏:\n"); //灞忓箷杈撳嚭寮曞彿鍐呯殑瀛楃鐒跺悗鎹㈣\x0d\x0afor(i=1;ia[j]) min=j; //澶у皬鏁板煎垽鏂璡x0d\x0a...
  • 涓涓C璇█闂:鐢ㄩ夋嫨娉曞鏁扮粍涓崄涓暟鐢卞皬鍒板ぇ鎺掑簭
    绛旓細浠ヤ笅鏄竴涓畬鏁寸殑閫夋嫨鎺掑簭鐨勪唬鐮侊紝灏辨病鐢╧./* 鐢ㄩ夋嫨鎺掑簭娉曞涓缁存暣鍨鏁扮粍涓殑鍗涓暟鍗囧簭鎺掑簭 绋嬪簭鍦╳in-tc鍜孌ev-c++涓嬮兘璋冭瘯閫氳繃*/ include <stdio.h> include <stdlib.h> int main(){int i,j,a[10],temp;printf("Please input 10 integers:\n");for(i=0;i<10;i++)scanf("%d",&...
  • C璇█,鐢ㄩ夋嫨娉曞鏁扮粍涓10涓暣鏁版寜鐢卞皬鍒板ぇ鎺掑簭
    绛旓細杩欐牱璇村惂锛屾瘮濡傦細绗竴杞惊鐜紝i=0锛屽湪鎵惧埌 j=4鐨勬椂鍊欙紝鏈夋洿灏忕殑鏁帮紝閭d箞閫氳繃i=j锛宨鐨勫煎彉鎴愪簡4锛岀劧鍚庡畬鎴愯繖杞惊鐜悗杩涘叆涓嬩竴杞惊鐜紝浣渋++杩愮畻锛宨鐨勫间负5锛岄偅涔坕鐨勫肩洿鎺ヤ粠0璺冲彉鍒颁簡5锛1~4灏辨病鏈夐亶鍘嗚繃锛屾紡鎺変簡濂藉锛屽氨鏄繖涓師鍥犮傜悊瑙e悧锛
  • 涓嬮潰绋嬪簭鐨鍔熻兘鏄:鐢ㄩ夋嫨鎺掑簭娉曞鏁扮粍涓10涓暟鎹寜鐢卞皬鍒板ぇ鎺掑簭銆傝璇 ...
    绛旓細printf(鈥渆nter the array\n鈥)锛沠or(I=0锛汭<10锛汭++)scanf(鈥%d鈥.&b[I])锛//寰幆璇诲彇鍗佷釜鏁板瓧 sort(b,10);//鎺掑簭锛岀涓涓弬鏁版槸鏁扮粍鍚嶇О锛岀浜屽弬鏁版寚鏄鏁扮粍鐨涓暟 printf(鈥渢he sorted array: \n鈥)锛沠or(I=0锛汭<10锛汭++)printf(鈥%d鈥,b[I])锛//寰幆杈撳嚭鎺掑簭鍚鐨勫崄涓暟 ...
  • 扩展阅读:扫一扫题目出答案 ... c语言数组选择题 ... c语言数组选择法解析 ... 用选择法对数组中10个 ... 数组排序方法 ... c语言数组中删数 ... c语言数组选择排序法 ... c语言四个基本类型 ... c语言将1到100放入数组中 ...

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