基础排序算法

常见的排序算法

冒泡排序

  • 思路
    从序列的一端开始往另一端冒泡,依次比较相邻两个数的大小
  • 算法
public static void sort(int arr[]){
	for(i=0;i<arr.length-1;i++) { // 对比轮数
		for(j=0;j<arr.length;j++) { 
			if(arr[j] < arr[j+1]) {// 比较相邻两个数据(大-》小)
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
}

选择排序

  • 思路
    首先,找到数组中最小的元素,拎出来,将它和数组的第一个元素交换位置;第二步,在剩下的元素中继续寻找最小的元素,拎出来,将它和素组的第二个元素交换位置;依次循环,直到整个素组排序完成
  • 算法
public static void sort(int arr[]){
	for(i=0;i<arr.length;i++) {
		int min = i; // 标记最小元素的下标
		for(j=i+1;j<arr.length;j++) { // 找出剩下数组中最小的元素下标
			if(arr[j] < arr[min]) [
				min = j;
			]
		}
		// 交换位置
		int temp = arr[min];
		arr[min] = arr[i];
		arr[i] = temp;
	}
}

插入排序

  • 思路
    在乱牌中抽一张出来,插入到左边,再抽一张出来,插入到左边,再抽一张,插入到左边,每次插入都插入到左边合适的位置,时刻保持左边的牌是有序的,直到右边的牌抽完,则排序完毕。
    我们把数组中的数据分成两个区域,已排序区域和未排序区域,初始化的时候所有的数据都处在未排序区域中,已排序区域是空。
  • 算法
public static void sort(int arr[]){
	for(i=1;i<arr.length;i++) {
		int value = arr[i]; // 抽取出的元素待插入
		for(j=i-1;j >=0; j--) { // 找到合适位置插入(比较已排序的)
		  if(arr[j] > value) {
		  	arr[j+1] = arr[j]; // 移动数据(往右移)
		  } else {
		    break;
		  }
		}
		arr[j+1] = value; // 插入
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值