排序的简单写法
Posted sallyshan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序的简单写法相关的知识,希望对你有一定的参考价值。
1.快速排序
1. 算法描述
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用。快速排序是一种既不浪费空间又可以快一点的排序算法。
2. 算法步骤
- 先从数列中取出一个数作为“基准”。
- 分区过程:将比这个“基准”大的数全放到“基准”的右边,小于或等于“基准”的数全放到“基准”的左边。
- 再对左右区间重复第二步,直到各区间只有一个数。
3. 算法实现(C语言)
#include <stdio.h> #include <stdlib.h> void sort(int a[],int n) int i,j,t; for(j=0; j<n; j++) for(i=0; i<n-1-j; i++) if(a[i]>a[i+1]) t=a[i]; a[i]=a[i+1]; a[i+1]=t; int main() /*int a[]= 3,9,2,1,4,5,6; int i; sort(a,7); for(i=0; i<7; i++) printf("%d ",a[i]); */ int a[10010]; int i,n; printf("输入一个整数:\\n"); scanf("%d", &n); printf("输入待排序的数组:\\n"); for(i=0; i<n; i++) scanf("%d",&a[i]); printf("\\n"); sort(a,n); printf("排序后的数组:\\n"); for(i=0; i<n; i++) if(i==0) printf("%d",a[i]); else printf(" %d",a[i]); printf("\\n");
void quicksort(int *a,int low,int high) int i=low, j=high; if(i<j) return; int temp=a[low]; while(i<j) while(a[j]>=temp&&i<j) j--; a[i]=a[j]; while(a[i]<=temp&&i<j) i++; a[j]=a[i]; a[i]=temp; quicksprt(a,low,i-1); quicksort(a,i+1,high);
2.javascript算法
var quickSort = function(arr) if (arr.length <= 1) return arr; var pivotIndex = Math.floor(arr.length / 2); //基准位置(理论上可任意选取) var pivot = arr.splice(pivotIndex, 1)[0]; //基准数 var left = []; var right = []; for (var i = 0; i < arr.length; i++) if (arr[i] < pivot) left.push(arr[i]); else right.push(arr[i]); return quickSort(left).concat([pivot], quickSort(right)); //链接左数组、基准数构成的数组、右数组 ;
选择排序 https://segmentfault.com/a/1190000009366805
希尔排序 https://segmentfault.com/a/1190000009461832
以上是关于排序的简单写法的主要内容,如果未能解决你的问题,请参考以下文章
快速排序基本思想,递归写法,python和java编写快速排序