冒泡排序
数组中相邻的元素两两比较,如果顺序有误就交换顺序,直到没有相邻的元素需要进行交换。
public class java_maopao {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]=new int[]{58,26,45,89,33};
for(int i=0;i<arr.length-1;i++){
for(int j=0; j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int k=0;k<arr.length;k++){
System.out.print(arr[k]+"\t");
}
}
}
var arr= new Array(19,11,97,45,53,12,33);
for(let i=0;i<arr.length-1;i++){
for(let j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
let temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for (const key in arr) {
const element = arr[key];
console.log(element);
}
选择排序
默认第一个元素为最小,遍历数组中全部元素,找到最小值,交换索引,这时第一个元素为最小值,从第二个元素开始重复以上步骤,直到全部完成。
function sort(arr){
for(var i=0;i<arr.length-1;i++){
var min=i;
for(var j=i+1;j<arr.length-1;j++){
if(arr[j]<arr[min]){
min=j;
}
}
if(min!=i){
var temp;
temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
}
return arr;
}
var arr = [12,10,9,54,21,44];
var a= sort(arr);
console.log(a)
插入排序
如果只有第一个元素,那么他本身就是有序的,从第二个元素开始,取出元素,与之前的元素比较,如果小于该元素,则插入到该元素前,重复之前的步骤,直到完成遍历。
var arr= new Array(19,11,97,45,53,12,33);
for(var i=1; i<arr.length;i++){
var temp;
temp = arr[i];
for(var j=i-1;j>=0;j--){
//取出的与前一个比较
if(temp<arr[j]){
arr[j+1]=arr[j];
}else{
break;
}
}
arr[j+1]=temp;
}
console.log(arr);
快速排序
选择一个基准元素p,将数组中比基准元素小的放在基准元素左边,比基准元素大的放在基准元素右边,再将左边和右边进行快速排序,递归实现。
在这里选择第一个元素为基准元素,将基准元素的左边和右边放在两个数组中,再对左右数组进行快速排序,实现整个数组的快速排序。
var arr= new Array(19,11,97,45,53,12,33);
function quickSort(arr){
if(arr.length<=1){
return arr;
}
var p = arr[0];
arr.splice(0,1);
var left=[];
var right=[];
for( var i =0;i<arr.length;i++){
if(arr[i]<p){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
return quickSort(left).concat([p],quickSort(right));
}
console.log(quickSort(arr));