排序算法摘录

在这里插入图片描述

选择排序

for(int i=0;i<size;i++){
	int k=i;
	for(int j=i+1;j<size;j++){
	if(a[k]<a[j]) k=j;
	}
	int temp=a[i];
	a[i]=a[k];
	a[k]=temp;
	}
}

插入排序

function insertionSort(arr) {
    var len = arr.length;
    var preIndex, current;
    for(vari = 1; i < len; i++) {
        preIndex = i - 1;
        current = arr[i];
        while(preIndex >= 0 && arr[preIndex] > current) {
            arr[preIndex + 1] = arr[preIndex];
            preIndex--;
        }
        arr[preIndex + 1] = current;
    }
    return arr;
}

快速排序

    private static void QuickSort(Integer[] a, int l, int r) {

        if (l >= r) {
            return;//l和r代表左右两边的的萝卜下标
        }

        int key = a[l];//挖出第一个萝卜备用      
        int left = l, right = r;//工人A和B分别站在最左边和最右边位置开始寻找需要交换位置的萝卜


        while (left < right) {
            while (right > left && a[right] >= key) {
            //B往左走寻找比挖出来的第一个萝卜轻,且位置在A右边的萝卜
                right--;
            }
            a[left] = a[right];
            while (left < right && a[left] <= key) {
            //A要往右寻找比一个萝卜重,且位置在B左边的萝卜
                left++;
            }
            a[right] = a[left];
        }

        a[left] = key;

        QuickSort(a, l, left);
        QuickSort(a, left + 1, r);

    }

归并排序

function mergeSort(arr) {
    varlen = arr.length;
    if(len < 2) {
        returnarr;
    }
    varmiddle = Math.floor(len / 2),
        left = arr.slice(0, middle),
        right = arr.slice(middle);
    returnmerge(mergeSort(left), mergeSort(right));
}
 
function merge(left, right) {
    varresult = [];
 
    while(left.length>0 && right.length>0) {
        if(left[0] <= right[0]) {
            result.push(left.shift());
        } else{
            result.push(right.shift());
        }
    }
 
    while(left.length)
        result.push(left.shift());
 
    while(right.length)
        result.push(right.shift());
 
    returnresult;
}

冒泡排序

void bubbleSort (elemType arr[], int len) {
    elemType temp;
    int i, j;
    for (i=0; i<len-1; i++) 
        for (j=0; j<len-1-i; j++) { 
            if (arr[j] > arr[j+1]) {
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值