排序算法 :冒泡排序 选择排序 插入排序

学习内容

排序算法

冒泡排序

选择排序

插入排序

具体内容

冒泡排序

做题思路

1、首先要对数组的元素进行两两之间的比较,之后进行交换,使得最大的元素在最后一个位置
2、不断循环上述步骤
在这里插入图片描述

解题

class Solution {
    public int[] sortArray(int[] nums) {
         return bubblesort(nums,nums.length);
    }
    //得到最后一个位置为最大值的方法
    public void bubble(int[] nums,int n){
    	//之所以是n-1,是因为我们不断与后一值进行比较,若是为n会超出范围
    	for(int i = 0 ;i < n-1;i++){
    		int temp = 0;
    		if(nums[i] > nums[i+1]){
    			temp = nums[i];
    			nums[i] = nums[i+1];
    			nums[i+1] = temp;
    		}
    	}
    }
    //不断循环上述方法
    public int[] bubblesort(int[] nums,int n){
    	while(n >= 1){
    		bubble(nums,n);
    		n--;
    	}
    	return nums;
    }
}

选择排序

做题思路

1、假设第一个元素最大值,再从数组里选出一个最大值,与最后一个元素进行交换,从而使最大元素在最后一个位置
在这里插入图片描述

解题

class Solution {
    public int[] sortArray(int[] nums) {
         selectionsort(nums,nums.length);
         return nums;
    }
    //该方法用于找出数组最大元素的位置
    public int selection(int[] nums,int n){
    	//假设第一个元素是最大值
    	int temp = 0;
    	int num = nums[0];
    	for(int i = 0; i < n;i++){
    		if(num > nums[i]){
    			num = nums[i];
    			temp = i;
    		}
    	}
    	return temp;
    }
    //交换位置切不断循环
    public void selectionsort(int[] nums,int n){
    	 while(n > 1){
            int temp1 = selection(nums,n);
            //进行交换
            int temp2 = nums[temp1];
            nums[temp1] = nums[n-1];
            nums[n-1] = temp2;
            n--;
        }
    }
 }

插入排序

做题思路

1、将第一个元素作为最小元素,之后后面的数字从后向前进行比较,若是比前面小,就不断往前,比前面大,就插入当前位置

解题

class Solution {
    public int[] sortArray(int[] nums) {
         selectionsort(nums,nums.length);
         return nums;
    }
    //插入方法,n表示当前该元素的位置
    public void insert(int[] nums,int n){
    	int temp = nums[n];
    	int i = n;
    	while(nums[i-1] > temp){
    		nums[i] = nums[i-1];
    		i--;
    		//若是该值为最小值
            if(i == 0){
                break;
            }
    	}
    	nums[i] = temp;
    }
	//不断循环该方法
	public void insertsort(int[] nums,int n){
        for(int i = 1;i <= n-1;i++){
            insert(nums,i);
        }
    }
}

总结

冒泡比较的是两个元素的大小(一交换,二循环),选择是提取当前数组对象的最大值放最后面(一找最大值,二循环交换),插入是当前元素从后往前比较(一比较,二循环)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来分别回答您的问题。 直接插入排序算法: 直接插入排序是一种简单的排序算法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。 算法步骤如下: 1. 将待排序的序列分成两个部分:已排序部分和未排序部分。 2. 取出未排序部分的第一个元素,将它插入到已排序部分的合适位置,使得插入后仍然是有序的。 3. 重复上述步骤,直至未排序部分为空。 下面是直接插入排序的 Python 代码实现: ```python def insert_sort(lst): n = len(lst) for i in range(1, n): key = lst[i] j = i - 1 while j >= 0 and lst[j] > key: lst[j + 1] = lst[j] j -= 1 lst[j + 1] = key return lst ``` 冒泡排序算法冒泡排序是一种交换排序算法,它的基本思想是通过不断地交换相邻的元素,把小的元素向数组的一端移动,把大的元素向数组的另一端移动,从而达到排序的目的。 算法步骤如下: 1. 从数组的第一个元素开始,依次比较相邻的两个元素的大小。 2. 如果它们的顺序不正确,就交换它们的位置,使得较小的元素被移到数组的前面。 3. 重复上述步骤,直至整个数组都被排序。 下面是冒泡排序的 Python 代码实现: ```python def bubble_sort(lst): n = len(lst) for i in range(n): for j in range(n - i - 1): if lst[j] > lst[j + 1]: lst[j], lst[j + 1] = lst[j + 1], lst[j] return lst ``` 希望我的回答能够帮到您!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值