幾個排序演算法

2021-06-20 12:04:55 字數 2758 閱讀 6397

/*

* to change this license header, choose license headers in project properties.

* to change this template file, choose tools | templates

* and open the template in the editor.

*/package suanfa;

import util.suanfautil;

/** * 插入排序:直接插入排序+希爾排序

* * @author administrator

*/public class testcharuandxier );

system.out.println("\n排序後陣列");

printa(a);

}public static void printa(int a)

for (int i = 0; i < a.length; i++)

system.out.print(string.format("% 5d", a[i]) + "|");}}

/*** 直接插入排序 逐個加入元素,並放到適當大小處

** @param a

*/public static void charusort(int a) }}

/*** 希爾排序 d為增量陣列

*/public static void xiersort(int a, int d) }}

if (k != d.length - 1) }}

}

/*

* to change this license header, choose license headers in project properties.

* to change this template file, choose tools | templates

* and open the template in the editor.

*/package suanfa;

import util.suanfautil;

/** * 選擇排序包括直接選擇排序和堆排序

* * @author administrator

*/public class testselectorsort

/*** 直接選擇排序

** @param a

*/public static void selectsort(int a) }}

}}

/*

* to change this license header, choose license headers in project properties.

* to change this template file, choose tools | templates

* and open the template in the editor.

*/package suanfa;

import util.suanfautil;

/** * 交換排序:包括氣泡排序和快速排序

* * @author administrator

*/public class testexchangesort

/*** 氣泡排序

** @param a

*/public static void bubblesort(int a) }}

}/**

* 快速排序 選取乙個元素,將目標陣列的中小於該元素的元素放到該元素左邊,大於的放到右邊

* 為什麼這算是交換排序?冒泡是兩兩比較交換位置,而快速則是乙個比較其他元素,並根據結果交換該元素與其他元素的位置?

** @param a

* @param low 當前排序的部分在目標陣列的下限

* @param high 上限

*/public static void quicksort(int a, int low, int high)

int targetindex = low;//記錄用於作為標準的元素當前下標,預設使用下端作為標準元素

for (int i = low + 1; i <= high; i++)

}//遞迴對後面的陣列部分操作

quicksort(a, low, targetindex - 1);

quicksort(a, targetindex + 1, high);

}}

package util;

/* * to change this license header, choose license headers in project properties.

* to change this template file, choose tools | templates

* and open the template in the editor.

*//**

* * @author djh

*/public class suanfautil

return a;

}public static void printarray(int a)

for (int i = 0; i < a.length; i++)

system.out.print(string.format("% 5d", a[i]) + "|");}}

}

幾個高速排序演算法

鴿巢排序,排序位元組串 寬位元組串最快的排序演算法,計數排序的變種 將計數緩衝區大小固定,少一次遍歷開銷 速度是stl中std sort的20多倍,更重要的是實現極其簡單!缺點是需要乙個size至少等於待排序陣列取值範圍的緩衝區,不適合int等大範圍資料 c c code void pigeonho...

幾個簡單的排序演算法

排序演算法 include using namespace std void insertsort int r,int n 直接插入 void shellsort int r,int n shell排序 void selectsort int r,int n 直接選擇排序 void bubbleso...

基本的幾個排序演算法

氣泡排序 第一次迴圈完畢,最小的在最上面。逐步處理 public sealed class bubble t where t icomparable if exchange 選擇排序 public sealed class select t where t icomparable 插入排序 演算法思...