首页 > 代码库 > 各种排序算法python和java实现(一)
各种排序算法python和java实现(一)
先从最简单的实现冒泡排序:
# -*- coding: UTF-8 -*- intarray=[3,4,5,1,2,0,6,9,7] def bubble(array): for i in range(1,len(array)): for j in range(i): if array[j] > array[i]: array[j],array[i] = array[i],array[j] #遍历数组 def print_list(array): for i in intarray: print i, #执行排序 bubble(intarray) #打印 print_list(intarray);
package sort; public class Sort { public static void main(String[] args) { int[] array = new int[] { 3, 4, 5, 1, 2, 0, 6, 9, 7 }; bubblesort(array); print(array); } private static void print(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i]); } } private static void bubblesort(int[] array) { // 冒泡的趟数,为length - 1 for (int i = 1; i < array.length; i++) { // 第二层循环为每次循环需要冒泡的次数 for (int j = 0; j < i; j++) { if (array[j] > array[i]) { int temp = array[j]; array[j] = array[i]; array[i] = temp; } } } } }
看完冒泡排序,看一个稍微有点思考的算法,直接插入排序,这种算法适合待排序的集合部分有序,先给出java的实现方式:
/** * 假设当前某个子集有序,选择下个值插入到这个有序的子集中 整个过程主要在于寻找要插入的下标。插入排序在部分子集有序 的情况下非常快。 * 初始假设array[0]有序 * @param array */ private static void insertSort(int[] array) { // 默认第一个为有序 int length = array.length; int temp; int j; // 将当前的值插入到有序子集 for (int i = 1; i < length; i++) { // 如果当前值比有序子集的最大值小则执行交换 if (array[i] < array[i - 1]) { // temp存储当前要插入的值,也叫做哨兵 temp = array[i]; // 有序子集从0-j,从后向前遍历 for (j = i - 1; j >= 0; j--) { if (temp < array[j]) { // 如果哨兵值小于子集的当前值,则将子集的当前值后移 array[j + 1] = array[j]; } else { // 否则找到哨兵要插入的下标 break; } } // 插入的下标为j+1 array[j + 1] = temp; } } }
下面是python的实现:
def insertSort(array): length = len(array) for i in range(1,length): if array[i] < array[i-1]: temp=array[i] for j in range(0,i)[::-1]: if temp < array[j]: array[j+1] = array[j] else: j = j+1 break array[j] = temp
看完直接排序,再来看下选择排序,顾名思义选择排序,每次遍历选择出子集的最小值,看java实现:
/** * 选择排序,每趟选择出子集的最小值,然后交换 * * @param array */ public static void selectionSort(int[] array) { int temp, minIndex; for (int i = 0; i < array.length; i++) { // 假设初始最小值为子集的第一个元素 minIndex = i; for (int j = i + 1; j < array.length; j++) { if (array[minIndex] > array[j]) { // 找出最小值的下标 minIndex = j; } } if (minIndex != i) { // 交换 temp = array[i]; array[i] = array[minIndex]; array[minIndex] = temp; } } }
再来看python版本:
def selectionSort(array): for i in xrange(0,len(array)): index = i for j in xrange(i,len(array)): if array[index] > array[j]: index = j temp = array[i] array[i] = array[index] array[index] = temp
以上就是集中简单排序的java和python实现,下一篇讲解几个稍微复杂点得变形排序。
各种排序算法python和java实现(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。