🧨冒泡排序
根据其原理可以将冒泡算法分为n(n比元素总数少1)轮,每一轮又要比较n-i(i代表第几轮)次并交换次数;每一轮比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置,对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。每一轮结束后,下一轮开始重复执行2的操作,直至一轮没有比较交换的为止。
int main(){
int n;
printf(“How many numbers that you want to sort:\n”);
scanf(“%d”, &n);
int i, randNum, num[n];
srand(time(NULL));
for(i=0;i<n;i++){
randNum = 1 + (int)rand() % 100;
num[i]=randNum;
}
numSort(num,n);
for(i=0;i<n;i++){
printf(“%4d\n”,num[i]);
}
return 0;
}
int numSort(int a[], int n){
int i, j, temp;
for(i=0;ia[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
return a[n];
}
🧨桶排序
待排序数组A[1…n]内的元素是随机分布在[0,1)区间内的的浮点数.辅助排序数组B[0….n-1]的每一个元素都连接一个链表.将A内每个元素乘以N(数组规模)取底,并以此为索引插入(插入排序)数组B的对应位置的连表中. 最后将所有的链表依次连接起来就是排序结果.
int main(){
int a[11], i, j, t;
for(i=0; i<=10; i++){
a[i]=0;
}
for(i=1; i<=5; i++){
scanf(“%d”,&t);
a[t]++;
}
for(i=0; i<=10; i++){
for(j=1; j<=a[i]; j++){
printf(“%d”, i);
}
}
getchar();
return 0;
}
🧨选择排序
第一次从待排序的 数据元素 中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。
int main(){
int n;
printf(“How many numbers that you want to sort:\n”);
scanf(“%d”, &n);
int i, randNum, num[n];
srand(time(NULL));
for(i=0;i<n;i++){
randNum = 1 + (int)rand() % 100;
num[i]=randNum;
}
numSort(num,n);
for(i=0;i<n;i++){
printf(“%4d\n”,num[i]);
}
return 0;
}
int numSort(int a[], int n){
int i, j, temp;
for(i=0;ia[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
return a[n];
}
声明:来自A校园虚拟空间,仅代表创作者观点。链接:https://eyangzhen.com/2601.html