排序算法

排序算法

分类

1、冒泡排序(Bubble Sort)

2、选择排序(Selection Sort)

4、希尔排序(Shell Sort)

5、归并排序(Merge Sort)

6、快速排序(Quick Sort)

7、堆排序(Heap Sort)

8、计数排序(Counting Sort)

9、桶排序(Bucket Sort)

10、基数排序(Radix Sort)

冒泡排序

基本思想

1.冒泡排序就是将相邻的两个数比较大小,较大的往后,较小的往前.

算法描述

1.比较相邻的两个数,如果第一个比第二个大,就把他们互换位置
2.每一对相邻元素都要进行比较,这样一次循环后,最后一位的数就会使最大的
3.再次对除了最后一位的数之外的数进行相邻比较

代码

int []a={5,7,2,3,8};
//52378
//23578
//23578
//23578

for (int i = 0; i < a.length-1; i++){
 for (int j = 0; i < a.length-1-i; j++){
    if(a[j]>a[aj+1]){
      int c=a[j];
      a[j]=a[j+1];
      a[j+1]=c;
    }
 }
}

选择排序

基本思想

首先在未排序的数列中找到一个最大(小)数,将他放到排序序列的起始位置,然后继续从未排序的序列中寻找最大(小)数,将其放在已排序序列的末尾

算法描述

1.从第一个起始位置开始,往后逐步查询,找到一个最大(小)数,将这个数与起始位置的数交换,并将这个最大(小)数放在有序序列,
2.从刚才起始位置数的下一个数开始,往后逐步查询,找到一个最大(小)数,将这个数与这个起始位置的数交换
3.重复上述步骤

代码

int []a={5,7,2,3,8};
// 8 7 2 3 5   a0
// 8 7 2 3 5   a1
// 8 7 5 3 2   a2
// 8 7 5 3 2   a3
for (int i = 0; i < a.length-1; i++){
 for (int j = i; i < a.length-1-i; j++){
 int num=i;
 if(a[j]>a[num]){
     num=j;
    }
    int c=a[i];
    a[i]=a[num];
    a[num]=c;
 }
}

插入排序

基本思想

在要排序的一组数中,假定前n-1个数已经排好了序,现在将第n个数插入到前面的有序序列中,使得这n个数排好顺序,如此循环.

算法描述

1.从第一个元素开始,该元素可以认为已经被排序;
2.取出下一个元素,在已经排序的序列里从后往前比较
3.如果以排序中的元素大于该元素,将以排序的元素后移
4.重复3,直到已排序中元素小于或等于该元素;
5.插入该位置
6.重复2-5

代码

int []a={5,7,2,3,8};
//57238
//57238
//25738
//23578
for (int i = 0; i < a.length-1; i++){
    int num=a[i+1];
    int c=i;
    while(c>=0){
        if(num<a[c]){
                a[c+1]=a[c];
            c--;
        }
    }
       a[c+1]=num;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值