快速排序与冒泡排序

快速排序:

  1. #include<iostream>
  2. #include<algorithm>
  3. using namespace std;
  4. int a[50000];
  5. //快速排序
  6. void quick_sort(int s[], int l, int r)
  7. {
  8. if (l < r)
  9. {
  10. // swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换
  11. int i = l, j = r, x = s[l];
  12. while (i < j)
  13. {
  14. while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
  15. j--;
  16. if(i < j)
  17. s[i++] = s[j];
  18. while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
  19. i++;
  20. if(i < j)
  21. s[j--] = s[i];
  22. }
  23. s[i] = x;
  24. quick_sort(s, l, i - 1); // 对前一次排好之后i=j的位置前再次调用
  25. quick_sort(s, i + 1, r); // 对前一次排好之后i=j的位置后再次调用
  26. }
  27. }
  28. int main()
  29. {
  30. int n;
  31. while(cin>>n,n)
  32. {
  33. for(int i=0;i<n;i++)
  34. {
  35. cin>>a[i];
  36. }
  37. quick_sort(a,0,n-1);
  38. for(int i=0;i<n;i++)
  39. cout<<a[i]<<" ";
  40. cout<<endl;
  41. }
  42. return 0;
  43. }

冒泡排序:

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int a[500],n,i,j,t;
  6. cin>>n;
  7. for(i=0;i<n;i++)
  8. {
  9. cin>>a[i];
  10. }
  11. for(j=1;j<=n;j++)
  12. {
  13. for(i=1;i<n;i++)
  14. {
  15. if(a[i]<a[i-1])
  16. {
  17. t=a[i];
  18. a[i]=a[i-1];
  19. a[i-1]=t;
  20. }
  21. }
  22. }
  23. for(i=0;i<n;i++)
  24. cout<<a[i]<<" ";
  25. cout<<endl;
  26. return 0;
  27. }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值