// 插入排序,a表示数组,n表示数组大小
public void insertionSort(int[] a, int n) {
if (n <= 1) return;
for (int i = 1; i < n; ++i) {
int value = a[i];
int j = i - 1;
// 查找插入的位置
for (; j >= 0; --j) {
if (a[j] > value) {
a[j+1] = a[j]; // 数据移动
} else {
break;
}
}
a[j+1] = value; // 插入数据
}
}
quicksort
int divide(int *a, int p, int r) {
int temp =0;
int i = p;
for (int j = p; j < r; j++) {
//两个指针指向的值怎么交换呢,先看j指向的值,小于就与i交换对应值
if (a[j] < a[r]) {
if (i != j){
temp = a[i];
a[i]=a[j];
a[j]=temp;
}
i++;
}
}
temp = a[r];//切记要将a[r]与a[i]值相互交换
a[r] = a[i];
a[i] = temp;
return i;
}
void quickSort(int *a, int p, int r) {
//切记p>=r时就跳出
if (p>=r) return;
int partion = divide(a, p, r);
quickSort(a,p,partion-1);
quickSort(a,partion+1,r);
}
void quick_sort_test()
{
int test[10] = {5, 8, 9, 23, 67, 1, 3, 7, 31, 56};
quickSort(test, 0, 9);
}