// 插入排序
#include <iostream>
using namespace std;
void InsertSort(int s[], int size)
{
if (size == 1)
return;
--size;
InsertSort(s,size);
int temp = s[size];
int j;
for (j = size; j > 0 && temp < s[j - 1]; --j)
s[j] = s[j - 1];
s[j] = temp;
}
int main()
{
int a[] = {4,6,3,2,1};
InsertSort(a,5);
for (int i = 0; i < 5; ++i)
{
cout << a[i] << " ";
}
}
public class main {
public static int sort(int da[], int a) {
int len = da.length;
int left = 0, right = len - 1;
int mid = 0;
while (left <= right) {
mid = (left + right) / 2;
if (a < da[mid]) {
right = mid - 1;
} else if (a > da[mid]) {
left = mid + 1;
} else {
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int a[] = {1, 2, 6, 87, 456, 899};
int result = sort(a, 899);
System.out.println(result);
}
}
package 快排;
/**
* Created by changqing on 2017/3/5.
*/
public class main {
public static void main(String[] args) {
int []nums={1,6,6,8,2,2,5,78,8,21,2,124,4};
QuickSort(nums,0,nums.length-1);
System.out.println(nums.toString());
}
public static int getMiddle(int []numbers,int low,int high)
{
int temp=numbers[low];
while(low<high)
{
while(numbers[high]>temp)
{
high--;
}
numbers[low]=numbers[high];
while(numbers[low]<temp)
{
low++;
}
numbers[high]=numbers[low];
}
numbers[low]=temp;
return low;
}
public static void QuickSort(int []numbers,int low,int high)
{
if(low<high)
{
int middle=getMiddle(numbers,low,high);
QuickSort(numbers,low,middle-1);
QuickSort(numbers,middle+1,high);
}
}
}
import java.util.Arrays;
/**
* Created by changqing on 2017/3/5.归并排序
*/
public class MergeSort {
public static void merge(int[] a, int low, int mid, int high) {
int[] temp = new int[high - low + 1];
int i = low;// 左指针
int j = mid + 1;// 右指针
int k = 0;
// 把较小的数先移到新数组中
while (i <= mid && j <= high) {
if (a[i] < a[j]) {
temp[k++] = a[i++];
} else {
temp[k++] = a[j++];
}
}
// 把左边剩余的数移入数组
while (i <= mid) {
temp[k++] = a[i++];
}
// 把右边边剩余的数移入数组
while (j <= high) {
temp[k++] = a[j++];
}
// 把新数组中的数覆盖nums数组
for (int k2 = 0; k2 < temp.length; k2++) {
a[k2 + low] = temp[k2];
}
}
public static void mergeSort(int[] a, int low, int high) {
int mid = (low + high) / 2;
if (low < high) {
// 左边
mergeSort(a, low, mid);
// 右边
mergeSort(a, mid + 1, high);
// 左右归并
merge(a, low, mid, high);
System.out.println(Arrays.toString(a));
}
}
public static void main(String[] args) {
int a[] = { 51, 46, 20, 18, 65, 97, 82, 30, 77, 50 };
mergeSort(a, 0, a.length - 1);
System.out.println("排序结果:" + Arrays.toString(a));
}
}
* Created by changqing on 2017/3/5. 选择排序
*/
public class selectSort {
public static void main(String[] args) {
int []nums={1,6,6,8,2,2,5,78,8,21,2,124,4};
SelectSort(nums);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
public static void SelectSort(int []nums) {
int size=nums.length;
for(int i=0;i<size;i++)
{
int k=i;
for(int j=size-1;j>i;j--)
{
if(nums[j]<nums[k])
k=j;
}
int temp=nums[i];
nums[i]=nums[k];
nums[k]=temp;
}
}
}