冒泡排序
function ArrayList(){
var arr = [];
var swap = function(i, j){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
this.insert = function(item) {
arr.push(item);
}
this.toString = function(){
return arr.join();
}
this.bubbleSort = function(){
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - i; j++) {
if (arr[j] > arr[j + 1]) {
swap(j, j + 1);
}
}
}
}
this.bubbleSort = function (){
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(j, j + 1);
}
}
}
}
}3
function createNoneSortedArray(size){
var arr = new ArrayList();
for (var i = size; i > 0; i--) {
arr.insert(i);
}
return arr;
}
var arr = createNoneSortedArray(5);
console.log(arr, arr.toString());
arr.bubbleSort();
console.log(arr.toString());
插入排序
function ArrayList(){
var arr = [];
var swap = function(i, j){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
this.insert = function (item){
arr.push(item);
}
this.toString = function(){
return arr.join();
}
this.insertSort = function(){
var len = arr.length;
for (var i = 1; i < len; i++) {
for (var j = i; j > 0; j--) {
if (arr[j - 1] > arr[j]) {
swap(j - 1, j);
}
}
}
}
this.insertSort = function(){
var len = arr.length;
for (var i = 1; i < len; i++) {
var e = arr[i];
var j;
for (j = i; j > 0 && arr[j - 1] > e; j--) {
arr[j] = arr[j - 1];
}
arr[j] = e;
}
}
}
function createNoneSortArray(size){
var arr = new ArrayList();
for (var i = size; i > 0; i--) {
arr.insert(i);
}
return arr;
}
var arr = createNoneSortArray(5);
console.log(arr.toString());
arr.insertSort();
console.log(arr.toString());
选择排序
function ArrayList(){
var arr = [];
var swap = function(i, j){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
this.insert = function (item){
arr.push(item);
}
this.toString = function(){
return arr.join()
}
this.selectSort = function(){
var len = arr.length;
for (var i = 0; i < len; i++) {
var minIndex = i;
for (var j = i; j < len; j++) {
if (arr[j] < arr[i]) {
minIndex = j;
}
}
if (i !== minIndex)
swap(i, minIndex);
}
}
}
function createNoneSortArray(size){
var arr = new ArrayList();
for (var i = size; i > 0; i--) {
arr.insert(i);
}
return arr;
}
var arr = createNoneSortArray(5);
console.log(arr.toString());
arr.selectSort();
console.log(arr.toString());
归并排序
function ArrayList(){
var arr = []
var swap = function(i, j){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
this.insert = function (item){
arr.push(item);
}
this.toString = function (){
return arr.join();
}
var __merge = function(arr, l, middle, r){
console.log('merge aray start : ', arr, l, middle, r);
var aux = arr.concat();
for (var i = l; i <= r; i++) {
aux[i - l] = arr[i];
console.log('copy ', arr[i], aux[i], i, r);
}
console.log('aux array now is ', aux, arr);
var i = l, j = middle + 1;
for (var k = l; k <= r; k++) {
if (i > middle) {
arr[k] = aux[j - l];
j++;
} else if (j > r) {
arr[k] = aux[i - l];
i++;
}
else if (aux[i - l] < aux[j - l]) {
arr[k] = aux[i - l];
i++;
} else {
arr[k] = aux[j - l];
j++;
}
}
}
var __mergeSort = function(arr, l, r){
console.log('sort ……', l, r);
if (l >= r)
return ;
var middle = Math.floor(l + (r - l) / 2);
console.log('middle now is ', middle);
__mergeSort(arr, l, middle);
__mergeSort(arr, middle + 1, r);
console.log('loading……', l, r, middle);
__merge(arr, l, middle, r);
return arr;
}
this.mergeSort = function(){
arr = __mergeSort(arr, 0, arr.length - 1);
return arr;
}
}
function createNoneSortArray(size){
var arr = new ArrayList();
for (var i = size; i > 0; i--) {
arr.insert(i);
}
return arr;
}
var arr = createNoneSortArray(5);
console.log('init array : ', arr.toString());
arr.mergeSort();
console.log('caculate result : ', arr.toString());
快速排序
function ArrayList(){
var arr = [];
var swap = function(i, j){
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
this.insert = function (item){
arr.push(item);
}
this.toString = function (){
return arr.join();
}
var __partition = function(arr, l, r){
var v = arr[l];
var i = l + 1, j = r;
while (true) {
while (i <= r && arr[i] < v){
i++;
}
while (j >= l && arr[j] > v) {
j--;
}
if (i > j) {
break;
}
swap(i, j);
i++;
j--;
}
swap(l, j);
return j;
}
var __quickSort = function(arr, l, r){
if (l >= r) {
return;
}
var p = __partition(arr, l, r);
__quickSort(arr, l, p - 1);
__quickSort(arr, p + 1, r);
}
this.quickSort = function(){
__quickSort(arr, 0, arr.length - 1);
}
function quickSort(arr) {
__quickSort(arr, 0, arr.length - 1)
}
function __quickSort(arr, l, r) {
if (l >= r) {
return;
}
let p = __partition(arr, l, r);
__quickSort(arr, l, p - 1);
__quickSort(arr, P + 1, r)
}
function __partition() {
let v = arr[l];
let i = l + 1, j = r;
while (true) {
while ()
}
}
}
function createNoneSortArray(size){
var arr = new ArrayList();
for (var i = size; i > 0; i--) {
arr.insert(i);
}
return arr;
}
var arr = createNoneSortArray(5);
console.log(arr.toString());
arr.quickSort();
console.log(arr.toString());