冒泡排序,选择排序,快速排序的写法以及自己的学习心得

本文详细介绍了三种基本排序算法:冒泡排序、选择排序和快速排序。冒泡排序通过不断交换相邻逆序元素实现升序排列;选择排序则在每一轮中选取最小(或最大)值放到正确位置;快速排序利用分治思想,通过一趟排序将待排记录分隔成独立的两部分,然后分别对这两部分继续进行排序,最终达到整个序列有序。
摘要由CSDN通过智能技术生成

**

1.冒泡排序

var arr1 = [4, 8, 1, 5, 9, 2, 7];
        for (var i = 0; i < arr1.length - 1; i++) {
     //外层循环 n个数只需要比较n-1次 所以是arr1.length-1
            for (var j = 0; j < arr1.length - 1 - i; j++) {
     //内层循环,每次过一轮都少一个元素比较,所以是arr1.length-1-i
                if (arr1[j] > arr1[j + 1]) {
     //大的数放后面 升序   
                    var temp = arr1[j];   //科学交换
                    arr1[j] = arr1[<
合并序(Merge Sort)是一种基于分治法的序算法,其主要思想是将待序的序列不断划分为更小的子序列,直到每个子序列只有一个元素,然后通过逐层合并有序的子序列,最终得到完全有序的序列。以下是使用Matlab编写的合并序程序: ```matlab function sorted = mergeSort(arr) n = length(arr); if n <= 1 sorted = arr; else mid = fix(n / 2); left = mergeSort(arr(1:mid)); right = mergeSort(arr(mid+1:n)); sorted = merge(left, right); end end function merged = merge(left, right) l = length(left); r = length(right); i = 1; j = 1; merged = []; while i <= l && j <= r if left(i) <= right(j) merged = [merged, left(i)]; i = i + 1; else merged = [merged, right(j)]; j = j + 1; end end if i <= l merged = [merged, left(i:end)]; else merged = [merged, right(j:end)]; end end ``` 快速排序(Quick Sort)是一种基于分治法的序算法,其主要思想是选择一个基准元素,将序列根据基准元素分为两部分,左边部分小于等于基准元素,右边部分大于等于基准元素,再对左右两部分递归进行快速排序。以下是使用Matlab编写的快速排序程序: ```matlab function sorted = quickSort(arr) n = length(arr); if n <= 1 sorted = arr; else pivot = arr(n); left = []; right = []; for i = 1:n-1 if arr(i) <= pivot left = [left, arr(i)]; else right = [right, arr(i)]; end end sorted = [quickSort(left), pivot, quickSort(right)]; end end ``` 以上两个程序都可以使用`arr`作为输入参数,返回一个有序的数组`sorted`。你可以使用Matlab的随机数生成函数来生成待序的实数序列,如`rand()`、`randi()`等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值