insertionSort

插入排序

by Chris_Walter

JavaScript

class ArrayList{
  constructor(){
	  this.array = [];
	}
	insert(item){
	  this.array.push(item);
	}
	toString(){
	  return this.array.join();
	}
	swap(A,B){
	  [ this.array[A], this.array[B]] = [ this.array[B], this.array[A]];
	}
	/*
	insertionSort(){
	  let temp;
		const length = this.array.length;
		let j;
		for(let i=1; i<length; i++){
		  j = i;
			temp = this.array[i];
			while(j>0 && this.array[j-1] > temp){
			  this.array[j] = this.array[j-1];
				j--;
			}
			this.array[j] = temp;
		}
	}
	*/
	insertionSort(){
	  const length = this.array.length;
		for(let i=0; i<length; i++){
		  for(let j=i-1; j>=0; j--){
			  if(this.array[j]>this.array[j+1]){
				  this.swap(j, j+1);
				}
			}
		}
	}
}

const nonSortedArray = (arraySize) => {
  const array = new ArrayList();
	for(let i=arraySize; i>0; i--){
	  array.insert(i);
	}
	console.log(`未使用插入排序前: ${array}`);
	array.insertionSort();
	console.log(`插入排序後: ${array}`);
	return array;
}


nonSortedArray(4);