排序是算法学习中比较大,也是比较基础的一块,我就拿我个人体验边学边讲一下我对排序算法的理解。
常用的排序算法有:a,选择排序 b,冒泡排序 c,合并排序 d,快速排序 e,插入排序
首先说一下选择排序:
1、基本思想:第i趟排序在无序序列中r(i)~r(n)中找到值最小的记录,并和第i个记录交换作为有序序列的第i个记录。
这是书上的解释,通俗的说就是,高中时候老师让站队,说:"来来都站成一列(无序区),然后说谁个子最矮,站出来站到前边跟第一排这换一下(这个前边就是有序区了),"
然后不断重复,直到无序区只剩下最后一个值为止。
第三次:有序区为c和b然后无序区a为最低的又是位置不变
第四次:有序区为c、b、a、无序区最低的为e,e和d交换位置。此时无序区只剩d了,于是排序完成。
好了程序员的耿直上代码:
#include <stdio.h>
#include <string.h>
void SelectSort(int r[],int n){
int i,j,index,temp;
for(i=0;i<n-1;i++){
index=i;
for(j=i+1;j<n;j++)
if(r[j]<r[index]) index=j;
if(index!=i){
temp=r[i]; r[i]=r[index]; r[index]=temp; }
}
}
main(){
int r[100],j=0,n;
while(scanf("%d",&n)){
for(int i=0;i<n;i++)
scanf("%d",&r[i]);
SelectSort(r,n);
for(int i=0;i<n;i++)
printf("%d",r[i]);
getchar();
}}