#include <stdio.h> #include <malloc.h> #include <assert.h> void QuickSort(int* left, int* right) { assert(left && right); //只剩1个元素,无需继续排序 //开始回归 if (left >= right) { return; } int* i = left; int* j = right; int pivot = *left; while (i < j) { //j在小于pivot的地方停下来 while (*j >= pivot && j > i) { j--; } *i = *j; //i在大于pivot的地方停下来 while (*i <= pivot && i < j) { i++; } *j = *i; } //将基准元素pivot放入它该在的位置 *j = pivot; QuickSort(left, i - 1);//i是上一轮已经处理好的元素,所以 -1 处理左边的元素 QuickSort(j + 1, right);//j是上一轮已经处理好的元素,所以 +1 处理右边的元素 } int main() { int n = 0; int i = 0; int* p = NULL; scanf("%d", &n); //开辟空间 p = (int*)malloc(sizeof(int) * n); if (!p) { perror("malloc:p"); return 1; } //录入数列 for (i = 0; i < n; i++) { scanf("%d", p + i); } //进行排序 QuickSort(p, p + n - 1); //进行去重输出 printf("%d ", *p); for (i = 1; i < n; i++) { if (*(p + i) == *(p + i - 1)) { continue; } printf("%d ", *(p + i)); } //释放空间 free(p); p = NULL; return 0; }
#include<stdio.h> int main() { int n = 0; scanf("%d", &n); int arr[1001] = { 0 }; int m = 0; for (int i = 0; i < n; i++) { scanf("%d", &m); arr[m] = m; } for (int i = 0; i <= 1000; i++) { if (arr[i] != 0) { printf("%d ", arr[i]); } } return 0; }
#include <stdio.h> #include <stdlib.h> int main() { int a, b, tmp; int n, size = 0; int* arr = NULL; //申请n个字节动态空间 while (arr == NULL) { scanf("%d", &n); arr = (int*)malloc(n * sizeof(int)); } //输入数据,重复的不进行储存 for (a = 0; a < n; a++) { scanf("%d", arr + size); size++; for (int i = 0; i < size-1; i++) { if (*(arr + size-1) == *(arr + i)) { size--; break; } } } //进行排序 for (a = 0; a < size-1; a++) { for (b = 0; b < size - a - 1; b++) { if (*(arr + b) > *(arr + b + 1)) { tmp = *(arr + b); *(arr + b) = *(arr + b + 1); *(arr + b + 1) = tmp; } } } for (a = 0; a < size; a++) { printf("%d ", *(arr + a)); } return 0; }
#include <stdio.h> void bubble_sort(int arr[], int sz)//整型冒泡升序 { int i = 0; int j = 0; int tmp = 0; int flag = 1; for (i = 0; i < sz - 1; i++) { for (j = 0; j < sz - i - 1; j++) { if (arr[j] > arr[j + 1]) { tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; flag = 0; } } if (flag == 1) { break; } } } int main() { //输入 int n = 0; int arr[1000] = {0}; scanf("%d", &n); int i = 0; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } //升序 bubble_sort(arr, n); //不重复输出 printf("%d ", arr[0]); for(i = 1; i < n; i++) { if (arr[i] != arr[i - 1]) { printf("%d ", arr[i]); } } return 0; }
#include<stdio.h> int main() { int n = 0; scanf("%d",&n); int arr[1001] = {0}; int i = 0; int tmp = 0; for(i = 0;i<n;i++) { scanf("%d",&tmp); arr[tmp] = tmp; } for(i = 0;i<1001;i++) { if(arr[i]) printf("%d ",arr[i]); } return 0; }
#include<stdio.h> int main(void) { int i,j,n; int flag,t,num[1000],k=0; scanf("%d",&n); for(i=0;i<n;i++)//去重操作 { flag=1; scanf("%d",&t); for(j=0;j<k;j++)//遍历已形成的数组 { if(t==num[j]) { flag=0; break; } } if(flag==1){//不存在此数则将其输入数组 num[k]=t; k++; } } int min,temp; for(i=0;i<k-1;i++)//选择排序 { min=i; for(j=i+1;j<k;j++) { if(num[j]<num[min]) { min=j; } } if(min!=i) { temp=num[i]; num[i]=num[min]; num[min]=temp; } } for(i=0;i<k;i++)//遍历输出 { printf("%d ",num[i]); } return 0; }
int main() { int n = 0; scanf("%d", &n); int arr[n]; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }//冒泡排序好 for (int i = 0; i < n - 1; i++) { if (arr[i] == arr[i + 1])//查重 { for (int j = i; j < n - 1; j++) { arr[j] = arr[j + 1];//移位 } i--; n--;//防止三个以上个连续的数字无法删除 } } for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }
#include<stdio.h> void sort(int a[],int n) { int i,j; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) if(a[i]>a[j]) { int temp = a[i]; a[i]=a[j]; a[j]=temp; } } } int main(){ int i,n,a[100]={0}; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d ",&a[i]); } sort(a,n); for(i=0;i<n-1;i++) { if(a[i]!=a[i+1]) printf("%d ",a[i]); } printf("%d",a[n-1]); return 0; }
#include <stdio.h> #define N 100 int main() { int n; scanf("%d", &n); int arr[N]; for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (int j = 0; j < n-1; j++) { if (arr[j] == -1) continue; for (int k = j+1; k < n; k++) { if (arr[j] == arr[k]) { arr[k] = -1; } } } for (int i = 0; i < n-1; i++) { if (arr[i] == -1) continue; for (int j = 0; j < n-1; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } for (int i = 0; i < n; i++) { if (arr[i] != -1) printf("%d ", arr[i]); } printf("\n"); return 0; }
#include<stdio.h> int main() { int n; scanf("%d",&n); int arr[10000]={0}; int m; while(~scanf("%d",&m)){ arr[m]=m; } for(int i=0;i<10000;i++){ if(arr[i]!=0){ printf("%d ",arr[i]); } } return 0; }