动态数组实现冒泡排序与选择排序

/*动态数组实现冒泡排序*/
#include<stdio.h>
#include<stdlib.h>


void bubble_sort(int a[], int n){//n为数组a的元素个数
//实现n-1轮排序
for (int i = 0; i < n - 1; i++){
for (int j = 0; j < n - 1 - i; j++){
if (a[j]>a[j + 1]){ //大的沉底,小的冒泡(从小到大排序)
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
/*选择排序,从数组中先找出最小数,置顶,之后从剩余序列中继续找出最小数,置于第二位,以此类推*/
void select_sort(int a[], int n){
int i, j;
for (i = 0; i < n; i++){
int k = i;//k用来记录最小数的位置
for (j = i + 1; j < n; j++){//此循环用来找出哪个数在本轮中最小
if (a[k]>a[j])//当ak大于aj,即前面的数大于后面的数时,说明此时最小数为aj,交换下标,此时k指向小的数
k = j;

}
if (k != i){//该轮中最小数为ak,则将ak置于该轮的顶部
int temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}


int main(){
int N;
scanf("%d", &N);
int *num;
num = (int*)calloc(N, sizeof(int));//动态分配数组长度
for (int i = 0; i < N; i++){
scanf("%d", &num[i]);
}
select_sort(num, N);//选择排序    
//bubble_sort(num,N);//冒泡排序
for (int i = 0; i < N; i++)
printf("%d ", num[i]);

free(num);//释放指针
system("pause");
return 0;
}


  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值