排序

选择排序

  • 从第[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);
	}
	
}
posted @ 2021-09-16 09:53  小帆敲代码  阅读(22)  评论(0编辑  收藏  举报