(1)原理讲解:
假如我是升序的:
选择排序,就是我拿一个数作为最初的参照点,(一般,就是拿第一个作为参照点)
(1) 10和7比较, 10比7大,然后交换 顺序变成:7,10,1,9~~~~~
(2) 7和1比较,7比1大,然后交换,顺序变成:1,10,7,9~~~~~
(3) 1和9比较,9比1大,不用交换,顺序还是1,10,7,9~~~~
(4) 1和4比,和6比,和2比,和3比都小,所以顺序不变
(5) 1和0比,1比0大,然后交换,顺序变成:0,10,7,9,4,6,7,3,2,1
上面是第一轮比较,然后,你会发现,第一轮的第一个数字是整个数字的最小的一个
然后按照同样的思路,进行第二轮排序:~~~~~~~~~~~~~~~~~~
然后按照同样的思路,进行第三轮排序:~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~等等:
基本代码实现:
1 1 int a[]={10,7,1,9,4,6,7,3,2,0}; 2 2 for(i=0;i<n;i++)//这个是进行了几轮 3 3 { 4 4 for(j=i+1;j<n,j++)//这个是进行每轮的比较 5 5 { 6 6 if(a[i]>a[j])//按照升序排的 7 7 { 8 8 t=a[i]; 9 9 a[i]=a[j]; 10 10 a[j]=t; 11 11 12 12 } 13 13 14 14 } 15 21 }
以后看别人带有算法的代码,基本思路就是:
1.看流程
2.每个语句的功能
3.试数 就是一个数,一个数的试一试,不要嫌麻烦
4.调试
5.模仿改 要学会模仿
(1)如果数组作为参数,那么数组形参退化为指针
比如:void Print_array(int a[100],int n)
这个100,其实写不写,无所谓
上面的函数可以写成:
void Print_array(int *a,int n)