几种排序算法的演示,要求给出从初始开始时的每一趟的变化情况,并对各种排序算法的排序性能做分析和比较
发布网友
发布时间:2022-04-18 07:53
我来回答
共3个回答
热心网友
时间:2022-04-18 09:23
//冒泡排序
#include <iostream>
using namespace std;
void print(int* a, int n){
for(int i=0; i<n; i++){
cout << a[i] << ' ';
}
cout << endl;
}
void sort(int* a, int n){
for(int i=0; i<n-1; ++i){//进行n-1次排序
bool f = true;
for(int j=0; j<n-1-i; j++){//两两相比
if(a[j]>a[j+1]){
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
f = false;
}
}
cout << "第" << i << "次:";
print(a, 10);
if(f)break;
}
}
int main()
{
int a[10] = {2,3,4,9,0,1,8,7,6,5};
cout << "排序前:";
print(a, 10);
sort(a, 10);
cout << "排序后:";
print(a, 10);
}
//选择排序
#include <iostream>
#include <algorithm>
using namespace std;
void print(int* a, int n){
for(int i=0; i<n; i++){
cout << a[i] << ' ';
}
cout << endl;
}
void sort(int* a, int n){
for(int i=0; i<n-1; i++){
int k = i;//假设i是最小的数的下标
for(int j=i+1; j<n; j++){
if(a[j]<a[k]) k = j;
}
if(i!=k) swap(a[i], a[k]);
cout << "第" << i << "次:";
print(a, 10);
}
}
int main()
{
int a[10] = {2,3,4,9,0,1,8,7,6,5};
cout << "排序前:";
print(a, 10);
sort(a, 10);
cout << "排序后:";
print(a, 10);
}
//快速排序
#include <iostream>
#include <algorithm>
using namespace std;
void print(int* a, int n){
for(int i=0; i<n; i++){
cout << a[i] << ' ';
}
cout << endl;
}
void sort(int* a, int n){
//当分组中的数据是1个或0个时,分组结束
if(n<=1)return;
//将数据分成两个组
int L = 0;
int R = n-1;
while(L<R){
while(L<R&&a[L]<=a[R]) R--;
swap(a[L], a[R]);
while(L<R&&a[L]<=a[R]) L++;
swap(a[L], a[R]);
}
//对左边的组再进行分组
sort(a, L);
//对右边的组再进行分组
sort(a+L+1,n-L-1);
}
int main()
{
int a[10] = {2,3,4,9,0,1,8,7,6,5};
cout << "排序前:";
print(a, 10);
sort(a, 10);
cout << "排序后:";
print(a, 10);
}
//插入排序
#include <iostream>
#include <algorithm>
using namespace std;
void print(int* a, int n){
for(int i=0; i<n; i++){
cout << a[i] << ' ';
}
cout << endl;
}
void sort(int* a, int n){
for(int i=1; i<n; ++i){
int t = a[i];//要插入的元素
int j = i;//要插入的位置
for( ; j>0&&a[j-1]>t; --j){
a[j] = a[j-1];
}
a[j] = t;
cout << "第" << i << "次:";
print(a, 10);
}
}
int main()
{
int a[10] = {2,3,4,9,0,1,8,7,6,5};
cout << "排序前:";
print(a, 10);
sort(a, 10);
cout << "排序后:";
print(a, 10);
}
热心网友
时间:2022-04-18 10:41
我去了。。15分这么多算法。。、
就写1个得了
快速排序第一趟
public class QuickSort { public static void method(int[] array ) { int i = 0 ; int j = array.length - 1; int k = array[0]; while(i != j) { while(array[j] > k) { j--; } int temp = k; k = array[j]; array[j] = temp; while (array[i] < k) { i++; } int temp1= k; k = array[i]; array[i] = temp1; } if(k == array[j]) { } } public static void main(String[] args) { int[] array = {49,38,65,97,76,13,27 }; QuickSort.method(array); for(int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } } }
热心网友
时间:2022-04-18 12:15
我是你同学,直接来找我。悬赏分给我。。。
握手!