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

\u592a\u5947\u8469\u4e86\u5427\uff1f\u518d\u628ak=i\u6539\u6210d=i\uff0c\u628aif(array[j]<array[k])\u6539\u6210if(array[j]<array[d])\u770b\u770b\u884c\u4e0d\u884c\uff1f\u524d\u9762\u7528k\u4f5c\u6bd4\u8f83\u4e0b\u6807\u53d8\u91cf\u4fe1\u606f\u8bb0\u5f55\uff0c\u7a81\u7136\u5192\u51fa\u4e2a\u4e0e\u524d\u9762\u6bd4\u8f83\u6ca1\u6709\u4efb\u4f55\u5173\u7cfb\u7684d\u6765\u80af\u5b9a\u9020\u6210\u9519\u8bef\u64cd\u4f5c\u2026\u2026

\u592a\u5947\u8469\u4e86\u5427\uff1f\u518d\u628ak=i\u6539\u6210d=i\uff0c\u628aif(array[j]<array[k])\u6539\u6210if(array[j]<array[d])\u770b\u770b\u884c\u4e0d\u884c\uff1f\u524d\u9762\u7528k\u4f5c\u6bd4\u8f83\u4e0b\u6807\u53d8\u91cf\u4fe1\u606f\u8bb0\u5f55\uff0c\u7a81\u7136\u5192\u51fa\u4e2a\u4e0e\u524d\u9762\u6bd4\u8f83\u6ca1\u6709\u4efb\u4f55\u5173\u7cfb\u7684d\u6765\u80af\u5b9a\u9020\u6210\u9519\u8bef\u64cd\u4f5c\u2026\u2026

选择排序的思想是:每一趟的排序过程都是在当前位置后面剩下的待排序对象中选出值最小的那个,然后放到当前位置上。
该程序中k的定义主要是为了存放数组中最小数的位置。然后通过t=array[k];array[k]=array[i];array[i]=t;这三条语句,再把这数组中最小的数字放到前面。注意C语言当中的“=”不是等于,只是一种赋值运算。其中if(array[j]<array[k]) k=j;这条语句用来比较当前位置的值和初始值(即array[0]的值)的大小的。注意上述语句中第二个for循环的循环体语句只有一条,即:if(array[j]<array[k]) k=j;自己试着分析一下就明白了。

如程序所给出的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

1、i=0, k=0,j=1,如果array[1]和array[0]比较,然后"k=1 t=array[k];array[k]=array[i];array[i]=t;"
表示将array[0]和array[1]较小的值赋给array[0];然后再将array[1]和array[2]作比较,将
较小的赋给array[0],如此类推,最后将最大值赋给array[0];
2、i=1, k,j重新赋值,按照1的结论将把除array[0]之外的所有值中最大的赋给array[1];
3、以此类推,将array[]升序排列。
空函数sort 让 k=i是为了只比较除最大数值之外的数值,k=j是为了在array[j]<array[k]时将较小的数值赋给array[i],若array[j]>=array[k],则不用k=j,直接将小值赋给array[i]。
不知道你能不能看懂 哈哈

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

首先以array[0]作为参照,从左到右扫描,找到最小的数据与array[0]位置交换。
接下来以array[1]作为参照,重复上述过程。
。。。
k=i定位参照
k=j找到剩下数组中最小值

  • C璇█,鐢ㄩ夋嫨娉曞鏁扮粍涓10涓鏁存暟鎸夌敱灏忓埌澶ф帓搴?姹傝В閲!!!
    绛旓細閫夋嫨鎺掑簭鐨勬濇兂鏄細姣忎竴瓒熺殑鎺掑簭杩囩▼閮芥槸鍦ㄥ綋鍓嶄綅缃悗闈㈠墿涓嬬殑寰呮帓搴忓璞′腑閫夊嚭鍊兼渶灏忕殑閭d釜锛岀劧鍚庢斁鍒板綋鍓嶄綅缃笂銆傝绋嬪簭涓璳鐨勫畾涔変富瑕佹槸涓轰簡瀛樻斁鏁扮粍涓鏈灏忔暟鐨勪綅缃傜劧鍚庨氳繃t=array[k];array[k]=array[i];array[i]=t;杩欎笁鏉¤鍙ワ紝鍐嶆妸杩欐暟缁勪腑鏈灏忕殑鏁板瓧鏀惧埌鍓嶉潰銆傛敞鎰C璇█褰撲腑鐨勨=鈥濅笉...
  • 鍏充簬C璇█鐢ㄩ夋嫨娉曞鏁扮粍涓10涓鏁存暟鎸夌敱灏忓埌澶ф帓搴
    绛旓細k=j;t=array[k];array[k]=array[i];array[i]=t;} }
  • C璇█:鐢ㄩ夋嫨娉曞鏁扮粍涓10涓鏁版寜鐢卞ぇ鍒板皬鎺掑簭
    绛旓細include<iostream> using namespace std;int main(){ void select_sort(int arry[],int n)int a[10],i;for(i=0;i<=9;i++){ cin>>a[i];} cout<<endl;cout<< select_sort(a,10); //鍑芥暟璋冪敤锛屾暟缁鍚嶄綔瀹炲弬 for(i=0;i<=9;i++) //杈撳嚭10涓宸茬粡鎺掑ソ搴忕殑鏁 { cout<<...
  • c璇█濡備綍鐢ㄩ夋嫨鎺掑簭瀵10涓鏁存暟鎺掑簭
    绛旓細for (i=0;i<10;i++) //鍦c璇█涓锛屾暟缁勭殑涓嬫爣浠0寮濮 printf("%5d",a[i]); //杈撳嚭杩10涓鏁 printf("\n"); //浠ヤ笅8琛屾槸瀵硅繖10涓暟鎺掑簭 for (i=0;i<10;i++){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]涓...
  • c璇█閫夋嫨娉鎺掑簭10涓鏁
    绛旓細c璇█閫夋嫨娉10涓鏁版帓搴忔柟娉曞涓嬶細鐢佃剳锛氳仈鎯虫嫰鏁戣厃7000p 绯荤粺锛歸indows1122454.1000 杞欢锛欳odeBlocks17.12 1銆侀鍏堟墦寮缂栬緫杞欢锛屾柊寤轰竴涓c绋嬪簭绌烘枃浠讹紝寮曞叆鏍囧噯搴撳拰涓诲嚱鏁帮紝瀹氫箟涓涓猀uickSort鍑芥暟鐢ㄦ潵鎺掑簭銆2銆佽繖閲岀敤i鍜宩涓や釜鍙橀噺鍒嗗壊鏁版嵁锛岀劧鍚庝竴閮ㄥ垎鐨勬墍鏈夋暟鎹兘姣斿彟澶栦竴閮ㄥ垎鐨勬墍鏈夋暟鎹兘瑕佸皬锛屾帴...
  • 缂栧啓绋嬪簭,鐢ㄩ夋嫨娉曞10涓鏁存暟鎸変粠灏忓埌澶ч『搴忔帓搴
    绛旓細閲囩撼鐜:59% 鏉ヨ嚜:鑺濋夯鍥 鎿呴暱: C/C++ 缂栫▼璇█ 鏁欒偛/绉戝 濞变箰浼戦棽 鐢佃剳/缃戠粶 涓烘偍鎺ㄨ崘: 缂栧啓绋嬪簭杈撳叆涓涓暣鏁 缂栧啓绋嬪簭鎶560鍒嗛挓 缂栧啓绋嬪簭灏嗘暣鏁版寜鐩稿弽 鏁存暟鏂囦欢 缂栧啓绋嬪簭 姹備袱鏁存暟鍜 閫夋嫨娉曟槸浠涔? 閫夋嫨娉曞10涓鏁存暟鎺掑簭 閫夋嫨鎺掑簭娉曚妇渚 绠鍗曠殑閫夋嫨娉曟帓搴 閫夋嫨娉曟帓搴忎袱绉嶆柟娉 鍏朵粬...
  • 鐢ㄩ夋嫨娉曞鏁扮粍涓10涓鏁存暟鎸夌敱灏忓埌澶ф帓搴忋
    绛旓細void sort(int a[],int n);int a[10],i;printf("enter ten number:");for(i=0;i<10;i++)scanf("%d",&a[i]);sort(a,10); //璋冪敤sort鍑芥暟锛宎涓鏁扮粍鍚嶏紝澶у皬涓10 for(i=0;i<10;i++)printf("%d\n",a[i]);} void sort(int a[],int n){ int i,j,k,t;for(i=...
  • C璇█鐢ㄦ暟缁,杈撳叆鍗佷釜鏁,閫夋嫨娉鎸変粠灏忓埌澶ф帓鍒
    绛旓細9涓暟浠庡皬鍒板ぇ鎺掑簭 瀵规暟缁勪粠灏忓埌澶х紪鍙 杈撳叆鏁扮粍 缁撴瀯浣撴暟缁 涓缁存暟缁 鏁扮粍浠庡皬鍒板ぇ鎺掑垪 鍏朵粬绫讳技闂2013-08-06 C璇█閫夋嫨娉曟帓搴忎换鎰忚緭鍏ュ崄涓暟:(浠庡ぇ鍒板皬;浠庡皬鍒板ぇ) 3 2016-06-10 c璇█,鐢ㄩ夋嫨娉曞鏁扮粍涓10涓鏁存暟鎸変粠灏忓埌澶х殑椤哄簭鎺掑簭 5 2011-09-06 C璇█鐢ㄩ夋嫨娉曞10涓暣鏁版寜浠庡ぇ鍒板皬鎺...
  • c璇█,鐢ㄩ夋嫨娉曞10涓鏁版帓搴,鎸夋璐熸暟鍒嗗紑杈撳嚭?
    绛旓細閫夋嫨鎺掑簭锛氬ぇ寰幆i渚濇鍙栧厓绱犲拰鍚庨潰鎵鏈夊厓绱犳瘮杈冿紝鎵惧嚭鍏朵腑鏈鍊硷紝鍜屽綋鍓峣鐨勫厓绱犱氦鎹備竴娆″ぇ寰幆浜ゆ崲涓娆°绋嬪簭鎬濊矾锛氫竴銆佹帓搴忓嚱鏁帮細鏍规嵁浼犲弬锛屽疄鐜伴檷搴忓崌搴忎袱绉嶅姛鑳姐備簩銆鏁扮粍杈撳嚭锛氭牴鎹紶鍙傦紝瀹炵幇姝f暟鍜岃礋鏁拌緭鍑轰袱绉嶅姛鑳姐備笅闈㈡槸浠g爜锛歩nclude <stdio.h> void px(int nums[],int len,int t);//鎺掑簭...
  • C璇█绋嬪簭 鐢ㄩ夋嫨娉曞鍗佷釜鏁版帓搴
    绛旓細{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 (i=1;i<=9;i++){min=i...
  • 扩展阅读:c语言数组选择法解析 ... c语言数组输入10个数 ... c#开发实战 ... 用选择法对数组中10个 ... 数组排序方法 ... c语言数组选择题题库 ... c语言数组选择排序法 ... c语言数组中n个数排序 ... 一维数组选择排序c语言 ...

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