#include<iostream>。
#include<iomanip>。
#include<time.h>。
using namespace std; //随机数函数头文件。
void main()
void sort1(int *);//冒泡法函数。
void sort2(int *);//快速排序法。
int i;
int a[1000];
srand(time(0)); //调用随机数 。
for(i=0;i<1000;i++)。
{
a[i]=1+rand()%1000; //随机数的使用方法 。
}
int q;
cout<<"1--冒泡法\n"<<"2--快速排序法\n";。
cout<<"请选择:";。
cin>>q;
cout<<"排序后的结果为:\n";。
switch(q)
{
case 1:
sort1(a);
break;
case 2:
sort2(a);
break;
}
void sort1(int *a)。
int i,j,temp,t=1;。
for(i=1;i<1000;i++) 。
for(j=1000-1;j>=i;j--) 。
if(a[j]<a[j-1]) 。
{
temp=a[j]; 。
a[j]=a[j-1]; 。
a[j-1]=temp;。
} //冒泡部分 。
for(i=0;i<1000;i++)。
{
cout<<setw(5)<<a[i];//为了使输入的数据对齐。
t++;
if(t%16==0) //每输出15个数换行。
{
cout<<endl;。
t=1;
}
}
void sort2(int *a)。
int i,j,k,t,m=1;。
for(i=0;i<1000-1;i++)。
{
k=i; //把第一个数的下标赋给k。
for(j=i+1;j<1000;j++)//比较出最小的(出了第一个数)
{
if (a[j]<a[k])。
k=j; //把比第一个数小的数的下标依此赋给k。
t=a[i];a[i]=a[k];a[k]=t;//把最小的数与第一个数交换。
}
}
for(i=0;i<1000;i++)。
{
cout<<setw(5)<<a[i];//为了使输入的数据对齐。
m++;
if(t%16==0) //每输出15个数换行。
{
cout<<endl;。
m=1;
}
}
//这是我目前所知道的所有排序了整合了一下:我测试用的是20个数字,你把数量改成1000即可!。
import java.util.Scanner;。
public class TestSort {。
private static Scanner sc=new Scanner(System.in);。
private static HeapSort myHs=new HeapSort();。
public static void main(String[] args) {。
int[] arr = new int[20];//数量!。
for (int i = 0; i < arr.length; i++) {。
arr[i] = (int) (Math.random() * 10 + 1);。
}
sop("原始顺序:\n");。
for (int a : arr)。
sop(a + ",");。
sop("\n\n----------------请选择需要使用的方法----------------\n");。
sop("\n-----1:冒泡;2:选择;3:插排;4:快排;5:希尔;6:堆排------\n");。
int tem=sc.nextInt();。
window(arr,tem);。
sop("\n排序后:\n");。
for (int a : arr)。
sop(a + ",");。
}// 菜单!
private static void window(int arr[], int a) {。
switch(a) {
case 1:myBubble(arr);。
break;
case 2:mySelect(arr);。
break;
case 3:myInsert(arr);。
break;
case 4:quicksort(arr);。
break;
case 5:myshell(arr);。
break;
default :
myHs.buildMaxHeapify(arr);。
myHs.heapSort(arr);。
break;
}
}
// 冒泡!
private static void myBubble(int[] arr) {。
for (int i = 0; i < arr.length - 1; i++)。
for (int j = 0; j < arr.length - i - 1; j++)。
if (arr[j] > arr[j + 1])。
swp(arr, j, j + 1);。
}// 选择!
private static void mySelect(int[] arr) {。
for (int i = 0; i < arr.length - 1; i++)。
for (int j = i + 1; j < arr.length; j++)。
if (arr[i] > arr[j])。
swp(arr, i, j);。
}// 插排!
private static void myInsert(int[] arr) {。
for (int i = 1; i < arr.length; i++)。
for (int j = i; j > 0; j--)。
if (arr[j] < arr[j - 1])。
swp(arr, j, j - 1);。
}// 快排!
public static void quicksort(int[] arr) {。
int start = 0;。
int end = arr.length - 1;。
quickSort(arr, start, end);。
}
public static void quickSort(int[] arr, int start, int end) {。
if (start < end) {。
int base = arr[start]; //。
int i = start, j = end;。
do {
while ((arr[i] < base) && (i < end))。
i++;
while ((arr[j] > base) && (j > start))。
j--;
if (i <= j) {。
swp(arr, i, j);。
i++;
j--;
}
} while (i <= j);。
if (start < j)。
quickSort(arr, start, j);。
if (end > i)。
quickSort(arr, i, end);。
}
}// 希尔
private static void myshell(int[] arr) {。
int i, j, gap, n;。
n = arr.length;。
for (gap = n / 2; gap > 0; gap /= 2)。
for (i = gap; i < n; i++)。
for (j = i - gap; j >= 0 && arr[j] > arr[j + gap]; j -= gap) {。
int tem = arr[j];。
arr[j] = arr[j + gap];。
arr[j + gap] = tem;。
}
}// 堆!
private static class HeapSort {。
void buildMaxHeapify(int[] data) {。
int startIndex = getParentIndex(data.length - 1);。
for (int i = startIndex; i >= 0; i--) {。
maxHeapify(data, data.length, i);。
}
}
void maxHeapify(int[] data, int heapSize, int index) {。
int left = getChildLeftIndex(index);。
int right = getChildRightIndex(index);。
int largest = index;。
if (left < heapSize && data[index] < data[left]) {。
largest = left;。
}
if (right < heapSize && data[largest] < data[right]) {。
largest = right;。
}
if (largest != index) {。
int temp = data[index];。
data[index] = data[largest];。
data[largest] = temp;。
maxHeapify(data, heapSize, largest);。
}
}
private void heapSort(int[] data) {。
for (int i = data.length - 1; i > 0; i--) {。
int temp = data[0];。
data[0] = data[i];。
data[i] = temp;。
maxHeapify(data, i, 0);。
}
}
private int getParentIndex(int current) {。
return (current - 1) >> 1;。
}
private int getChildLeftIndex(int current) {。
return (current << 1) + 1;。
}
private int getChildRightIndex(int current) {。
return (current << 1) + 2;。
}
}// 交换!
private static void swp(int[] arr, int i, int j) {。
int tem = arr[i];。
arr[i] = arr[j];。
arr[j] = tem;。
}// 打印!
private static <T> void sop(T t) {。
System.out.print(t);。
}
你下拉菜单里面有个 (自定义...) ,单击(自定义...)出来一个 自定义自动筛选方式 框框,在 显示行: 下面例如选择 等于 在右边输入你想归类的完整的数据,例如:3056 或者是文本例如:您好祝天天开心 后单击【确定】
建议换个高级的版本例如Excel2007就不会这样麻烦了。
数据截个图看看,我没出现这个问题诶?
a <-sample(1:2000)。
sort(a)
没问题