数据结构之排序整理C++
来源:互联网 发布:广联达造价软件培训 编辑:程序博客网 时间:2024/06/05 20:25
例题1:
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
插入排序:
题目代码:
#include<iostream>
using namespace std;
void Sort(int *a,int n)
{ //插入排序
int i,j,temp,k;
for(i=1;i<n;i++)
{
temp = a[i];
for(j=i-1;j>=0&&a[j]>temp;j--)
{
a[j+1] = a[j];
}
a[j+1] = temp;
}
}
int main()
{
int n,*a;
cin>>n;
a = new int[n];
for(int i=0;i<n;i++)
{
cin>>*(a+i);
}
Sort(a,n);
for(int i=0;i<n;i++)
{
cout<<*(a+i)<<" ";
}
delete [] a;
}
例题2:
冒泡排序:
输入一个随机数组,按照升序的方式进行输出
#include <iostream>
using namespace std;
void sort(int * num)
{
int i, j = 0;
for (i = 0; i <= 9; ++i)
{
for (j = 0; j < 10 - 1 - i; j++)
{
if (num[j] > num[j + 1])
{
int temp;
temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
}
}
int main()
{
int number_[10] = { 0 };
for (int i = 0; i < 10; i++)
{
cin >> number_[i];
}
sort(number_);
for (int i = 0; i < 10; i++)
{
cout << number_[i] << endl;
}
return 0;
}
例题3:
归并算法:(效率最高)
#include <iostream>
using namespace std;
void mergearray(int *a, int first, int mid, int last, int temp[])
{
int i = first;
int j = mid + 1;
int m = mid;
int n = last;
int k = 0;
while (i <= m && j <= n)
{
if (a[i] <= a[j])
{
temp[k++] = a[i++];
}
else
{
temp[k++] = a[j++];
}
}
while (i <= m)
{
temp[k++] = a[i++];
}
while (j <= n)
{
temp[k++] = a[j++];
}
for (i = 0; i < k; i++)
{
a[first + i] = temp[i];
}
}
void mergesort(int *a, int first, int last, int temp[])
{
if (first < last)
{
int mid = (first + last) / 2;
mergesort(a, first, mid, temp);
mergesort(a, mid+1, last, temp);
mergearray(a, first, mid, last, temp);
}
}
bool MergeSort(int *a, int n)
{
int p[10] = { 0 };
if (p == NULL)
{
return false;
}
mergesort(a, 0, n - 1, p);
for (int i = 0; i < 10; i++)
{
cout << p[i] << endl;
}
return true;
}
int main()
{
int a[10] = { 10,4,5,1,3,7,8,3,7,9 };
MergeSort(a, 10);
return 0;
}
例题4:
快速排序:
#include <iostream>
using namespace std;
void quick_sort(int *s, int l, int r)
{
if (l < r)
{
int i = l;
int j = r;
int x = s[l];
while (i < j)
{
while (i < j && s[j] >= x)
{
j--;
}
if (i < j)
{
s[i++] = s[j];
}
while (i < j && s[i] < x)
{
i++;
}
if (i < j)
{
s[j--] = s[i];
}
}
s[i] = x;
quick_sort(s, l, i - 1);
quick_sort(s, i + 1, r);
}
}
int main()
{
int a[5] = { 5,4,3,2,1 };
quick_sort(a, 0, 4);
for (int i = 0; i < 5; i++)
{
cout << a[i] << endl;
}
}
- 数据结构之排序整理C++
- C数据结构之排序
- 数据结构之排序算法整理(1)
- 数据结构之排序算法整理(2)
- 数据结构之排序算法整理(3)
- 数据结构之排序算法整理(4)
- 数据结构之排序算法整理(5)
- 数据结构之简单选择排序(参考整理严蔚敏数据结构)
- 数据结构之插入排序之希尔排序(缩小增量排序)—参考整理严蔚敏数据结构
- 数据结构之交换排序之快速排序(参考整理严蔚敏数据结构)
- 数据结构之希尔排序(C语言)
- 数据结构之快速排序(C语言)
- 数据结构(C语言描述)读书笔记之排序
- 数据结构c语言版之直接插入排序
- 数据结构c语言版之简单选择排序
- 数据结构之---C语言实现冒泡排序
- 数据结构之---C语言实现选择排序
- 数据结构之---C语言实现希尔排序
- sqlserver 怎么建索引
- 【Leetcode】506. Relative Ranks
- 跟小博老师一起学习MyBatis ——MyBatis搭建运行环境
- vs2010调试时,无法找到“XXX.exe”的调试信息,或者调试信息不匹配,未生成二进制文件
- 手把手教你如何打贪吃蛇c/c++,初学编程请各位评论教导教导
- 数据结构之排序整理C++
- 第一次看完设计模式的总结
- 文件类型与扩展名
- 每天一个小题目——小明的棋盘
- javax.validation.ValidationException: Unable to create a Configuration
- Java 理论与实践: 并发集合类
- mysql in 排序 也可以按in里面的顺序来排序
- PHP7内核剖析之执行流程
- mybatis中$和#的区别