C++ 程序执行 Shaker 排序
Shaker 排序用于对给定数据进行排序。与冒泡排序不同,Shaker 排序按两个方向对数组进行排序。此算法的最坏复杂度为 O(n^2)。
算法
Begin ShakerSort() function has ‘arr’ the array of data and ‘n’ the number of values, in the argument list. // Implement Sorting algorithm using nested for loops. The parent loop will run on ‘i’ from 0 to n-1 and contains two loops inside. The first loop will run on ‘j’ from i+1 to n-1 and use swap() if a[j] < a[j-1]. Decrement n. The second loop will run on 'k' from m-1 to i+1 and use swap() if a[k] < a[k-1]. Increment i. End
示例代码
#include<iostream>
using namespace std;
void swap(int *a, int *b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void ShakerSort(int a[], int m) {
int i, j, k;
for(i = 0; i < m;) {
for(j = i+1; j < m; j++) {
if(a[j] < a[j-1])
swap(&a[j], &a[j-1]);
}
m--;
for(k = m-1; k > i; k--) {
if(a[k] < a[k-1])
swap(&a[k], &a[k-1]);
}
i++;
}
}
int main() {
int n, i;
cout<<"\nEnter the number of data element to be sorted: ";
cin>>n;
int a[n];
for(i = 0; i < n; i++) {
cout<<"Enter element "<<i+1<<": ";
cin>>a[i];
}
ShakerSort(a, n);
cout<<"\nSorted Data ";
for (i = 0; i < n; i++)
cout<<"->"<<a[i];
return 0;
}输出
Enter the number of data element to be sorted: 4 Enter element 1: 3 Enter element 2: 1 Enter element 3: 7 Enter element 4: 6 Sorted Data ->1->3->6->7
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP