冒泡排序 简单选择排序 插入排序 快速排序

这篇具有很好参考价值的文章主要介绍了冒泡排序 简单选择排序 插入排序 快速排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

bubblesort

两个for循环,从最右端开始一个一个逐渐有序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void bubble(int *arr, int len);
int main(int argc, char *argv[])
{
	int arr[] = {1, 2, 3, 4, 5, 6, 7};
	int len = sizeof(arr) / sizeof(int);
	bubble(arr, len);

	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	putchar(10);
	return 0;
}

void bubble(int *arr, int len)
{
	for (int i = 0; i < len - 1; i++)
	{
		int count = 0;
		for (int j = 0; j < len - 1 - i; j++)
		{
			if (arr[j] < arr[j + 1])
			{
				arr[j] ^= arr[j + 1];
				arr[j + 1] ^= arr[j];
				arr[j] ^= arr[j + 1];
				count++;
			}
		}
		if (count == 0)
		{
			break;
		}
	}
}

selectsort

假设是升序,两个for循环,从最左端开始一个一个逐渐有序,找到lengh-1个无序区的最小值

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void selectSort(int *arr, int len);
int main(int argc, char *argv[])
{
	int arr[] = {1, 2, 3, 4, 5, 6, 7};
	int len = sizeof(arr) / sizeof(int);
	selectSort(arr, len);

	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	putchar(10);
	return 0;
}

void selectSort(int *arr, int len)
{
	int i, j;
	int min;
	for (i = 0; i < len - 1; i++)
	{
		min = i;
		for (j = i + 1; j < len; j++)
		{
			if (arr[j] > arr[min])
			{
				min = j;
			}
		}

		if (i != min)
		{
			arr[min] ^= arr[i];
			arr[i] ^= arr[min];
			arr[min] ^= arr[i];
		}
	}
}

insertsort

两个for循环,从最左端开始一个一个逐渐有序,默认第一个就是有序区,第一个for遍历无序区,第二个for循环遍历有序区,为无序区的元素的插入挪出合适的位置

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void insertSort(int *arr, int len)
{
	int i, j;
	int temp;
	for (i = 1; i < len; i++)
	{
		temp = arr[i];
		for (j = i - 1; j >= 0; j--)
		{
			if (arr[j] > temp)
			{
				arr[j + 1] = arr[j];
			}
			else
			{
				break;
			}
		}
		arr[j + 1] = temp;
	}
	
}

int main(int argc, char *argv[])
{
	int arr[] = {11, 2, 3, 4, 5, 6, 7};
	int len = sizeof(arr) / sizeof(int);
	insertSort(arr, len);

	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	putchar(10);
	return 0;
}

quicksort

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int oneSort(int *arr, int low, int high)
{
	int key = arr[low];
	while (low < high)
	{
		while (low < high && arr[high] >= key)
		{
			high--;
		}
		arr[low] = arr[high];
		while (low < high && arr[low] <= key)
		{
			low++;
		}
		arr[high] = arr[low];
	}
	arr[low] = key;
	return low;
}

void quickSort(int *arr, int low, int high)
{
	if (low >= high)
	{
		return;
	}

	int mid = oneSort(arr, low, high);
	oneSort(arr, low, mid - 1);
	oneSort(arr, mid + 1, high);
}

int main(int argc, char *argv[])
{
	int arr[] = {11, 2, 3, 4, 5, 6, 1};
	int len = sizeof(arr) / sizeof(int);
	quickSort(arr, 0, len - 1);

	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	putchar(10);
	return 0;
}

脑图

冒泡排序 简单选择排序 插入排序 快速排序,算法,数据结构,排序算法

 文章来源地址https://www.toymoban.com/news/detail-640845.html

#!/bin/bash

function fun()
{
	read -p "请输入用户名:" username
	str=`grep -w $username /etc/passwd`
	if [ -n "$str" ]
	then
		echo `id -u $username`
		echo `id -g $username`
	else
		echo "用户不存在"
	fi
}

arr=(`fun`)
echo ${arr[*]}

到了这里,关于冒泡排序 简单选择排序 插入排序 快速排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包