选择排序
- 从第[i,n]中挑选最小的元素,使其与A[i]交换
代码
//选择排序
int datas[];
int n;
void selectSort()
{
for (int i = 0; i < n; i++)
{
int minIndex = i;
for (int j = i + 1; j < n; j++)
{
if (datas[j] < datas[minIndex])
{
minIndex = j;
}
}
int temp = datas[minIndex];
datas[minIndex] = datas[i];
datas[i] = temp;
}
}
插入排序
- 从已排序好的[0,i-1]中找到第i个元素应该出现的位置
int datas[];
int n;
void insertSort()
{
for (int i = 0; i < n; i++)
{
int index = 0, num = datas[i];
for (int j = i-1; j>=0; j--)
{
if (num > datas[j])
{
index = j+1;
break;
}
datas[j + 1] = datas[j];
}
//将num放在Index处
datas[index] = num;
}
}
#include<iostream>
using namespace std;
// 冒泡排序
void bubbleSort(int nums[], int length)
{
for (int i = 0;i < length;i++)
{
for (int j = 0;j < length - i - 1;j++)
{
if (nums[j] > nums[j + 1])//前面的小于后面的 交换
{
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
}
//选择排序
void chooseSort(int nums[], int length)
{
for (int i = 0;i < length;i++)
{
int minIndex =i;
for (int j = i+1;j < length;j++)
{
if (nums[j] < nums[minIndex])
{
minIndex = j;
}
}
//交换
int temp = nums[i];
nums[i] = nums[minIndex];
nums[minIndex] = temp;
}
}
void insertSort(int nums[], int length)
{
for (int i = 0;i < length-1;i++)
{
int num = nums[i + 1];
for (int j = i ;j >=0;j--)
{
if (num > nums[j])
{
nums[j] = num;
break;
}
else
{
//nums[j]后移
nums[j + 1] = nums[j];
}
}
}
}
int Partition(int nums[], int low,int high)
{
int flag = nums[low];
while (low < high)
{
while (low<high && nums[high]>=flag)
{
high--;
}
nums[low] = nums[high];
while (low < high && nums[low] <= flag)
{
low++;
}
nums[high] = nums[low];
}
nums[low] = flag;
return low;
}
void quickSort(int nums[],int start,int end)
{
if (start < end)
{
int index = Partition(nums, start, end);
quickSort(nums, start, index);
quickSort(nums, index+1, end);
}
}