常用的排序 冒泡 ,选择,插入,快速
来源:互联网 发布:淘宝网九阳榨汁机 编辑:程序博客网 时间:2024/05/20 06:51
快速排序:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#include<time.h>
#define MAX 10
void printArray(int arr[], int len){
for (int i = 0; i < len; i++){
printf("%d ", arr[i]);
}
printf("\n");
}
//快速排序
void QuickSort(int arr[],int start, int end){
int i = start;
int j = end;
//取基准数
int target = arr[start];
if (i < j){
while (i < j){
//从右向左找比基准数大的
while (i < j && arr[j] < target){
j--;
}
if (i < j){
arr[i] = arr[j];
i++;
}
//从左向右找比基准数小的
while (i < j && arr[i] > target){
i++;
}
if (i < j){
arr[j] = arr[i];
j--;
}
}
//i的位置就是基准数最合适的位置
arr[i] = target;
//快速排序左半部分
QuickSort(arr,start,i - 1);
//快速排序有半部分
QuickSort(arr, i + 1, end);
}
}
int main(){
int arr[MAX];
srand((unsigned int)time(NULL));
for (int i = 0; i < MAX; i++){
arr[i] = rand() % MAX;
}
//排序前
printArray(arr, MAX);
//冒泡排序
QuickSort(arr, 0,MAX - 1);
//排序后
printArray(arr, MAX);
system("pause");
return EXIT_SUCCESS;
}
插入排序:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 10
void printArray(int arr[], int len){
for (int i = 0; i < len; i++){
printf("%d ", arr[i]);
}
printf("\n");
}
//插入排序
void InsertSort(int arr[],int len){
for (int i = 1; i < len; i ++){
if (arr[i] < arr[i - 1]){
int temp = arr[i];
int j = i - 1;
for (; j >= 0 && temp < arr[j]; j --){
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
}
}
int main(){
int arr[MAX];
srand((unsigned int)time(NULL));
for (int i = 0; i < MAX; i++){
arr[i] = rand() % MAX;
}
//排序前
printArray(arr, MAX);
//冒泡排序
InsertSort(arr, MAX);
//排序后
printArray(arr, MAX);
system("pause");
return EXIT_SUCCESS;
}
选择排序:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define MAX 10
void printArray(int arr[], int len){
for (int i = 0; i < len; i++){
printf("%d ", arr[i]);
}
printf("\n");
}
//交换两个元素
void MySwap(int arr[], int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//选择排序 升序
void SelectSort(int arr[],int len){
for (int i = 0; i < len; i ++){
int min = i;
for (int j = i; j < len; j ++){
if (arr[j] < arr[min]){
min = j;
}
}
if (min != i){
MySwap(arr, min, i);
}
}
}
int main(){
int arr[MAX];
srand((unsigned int)time(NULL));
for (int i = 0; i < MAX; i++){
arr[i] = rand() % MAX;
}
//排序前
printArray(arr, MAX);
//冒泡排序
SelectSort(arr, MAX);
//排序后
printArray(arr, MAX);
system("pause");
return EXIT_SUCCESS;
}
冒泡排序:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define MAX 10
void printArray(int arr[],int len){
for (int i = 0; i < len;i++){
printf("%d ",arr[i]);
}
printf("\n");
}
//交换两个元素
void MySwap(int arr[],int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//冒泡排序
void BubbleSort(int arr[], int len){
for (int i = 0; i < len; i ++){
for (int j = len - 1; j > i;j--){
if (arr[j] < arr[j-1]){
MySwap(arr,j,j-1);
}
}
}
}
//冒泡排序改进
void BubbleSort2(int arr[],int len){
int flag = 0; //没有排好
for (int i = 0; i < len && flag == 0; i++){
flag = 1; //认为已经排好
for (int j = len - 1; j > i; j --){
if (arr[j] < arr[j-1]){
flag = 0; //没有排好 再拍一次
MySwap(arr,j,j-1);
}
}
}
}
int main(){
int arr[MAX];
srand((unsigned int)time(NULL));
for (int i = 0; i < MAX; i++){
arr[i] = rand() % MAX;
}
//排序前
printArray(arr,MAX);
//冒泡排序
//BubbleSort(arr,MAX);
BubbleSort2(arr, MAX);
//排序后
printArray(arr, MAX);
system("pause");
return EXIT_SUCCESS;
}
- 常用的排序 冒泡 ,选择,插入,快速
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- 常用的选择排序.Shell排序.快速排序.冒泡排序.插入排序的算法
- 介绍4个常用的排序法。冒泡排序、插入排序、快速排序、选择排序法
- java常用的几种排序(冒泡排序 选择 插入排序 /快速排序)
- 常用的排序算法:冒泡,简单选择,直接插入,快速排序,堆排序
- 冒泡、插入、选择、快速排序
- 冒泡,快速,选择,插入排序
- 排序------快速,插入,选择,冒泡
- 插入排序 冒泡 选择 快速
- 冒泡、快速、选择、插入、排序
- C语音常用排序算法 (冒泡 选择 快速 插入)
- 常用排序算法--冒泡,插入,选择,希尔,归并,快速
- C语言常用的几种排序算法代码(选择排序,冒泡排序,插入排序,快速排序)
- java 数组的排序,含冒泡、插入、选择、快速排序。
- 冒泡、选择、快速排序、插入排序
- 数组的冒泡,选择,插入和快速排序
- 冒泡、插入、快速、选择排序的java实现
- jsp,struts1,struts2,springMvc开发性能对比
- 重构大总结
- 【数据库-MySql】DATE_ADD 、 DATE_SUB、DATE_FORMAT
- 给 Visual Studio 换颜色
- Spring Cloud 集成 kafka
- 常用的排序 冒泡 ,选择,插入,快速
- MFC中SQL语言关于日期的比较
- tensorflow:3.1)add_to_collection和L2正则化
- Java基础--复用类(组合和继承)
- 微服务实战(六):选择微服务部署策略
- myflag step10:flagdao的编写
- sql基础1
- Toolbar常见用法总结
- Java通过jsoup解析整个网站需要的内容